home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d27 / inter490.arc / INTERRUP.D < prev    next >
Text File  |  1990-08-04  |  161KB  |  4,677 lines

  1. INT 60 - reserved for user interrupt
  2. ---------------------------------------------
  3. INT 60 - Zero Bug Virus
  4.    The "Zero Bug" virus hooks this vector.  Purpose unknown.
  5. ---------------------------------------------
  6. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  7. ---------------------------------------------
  8. INT 60 - PC-IPC API
  9.     STACK:    DWORD    pointer to parameter block (see below)
  10. Return: STACK:    unchanged
  11. Notes:    PC-IPC is a shareware TSR by Donnelly Software Engineering which allows
  12.       communication between independent programs
  13.     INT 60 is the default, any interrupt vector may be used by specifying
  14.       the vector on the commandline
  15.  
  16. Format of parameter block:
  17. Offset    Size    Description
  18.  00h    WORD    caller's ID
  19.  02h    WORD    to ID
  20.  04h    WORD    command code (see below)
  21.  06h    WORD    returned status
  22.         bit 0: unused
  23.         bit 1: IPC enabled
  24.         bit 2: IPC installed
  25.         bit 3: error
  26.         bit 4: message(s) available
  27.  08h    WORD    returned error code
  28.  0Ah    WORD    size of data
  29.  0Ch    DWORD    pointer to data buffer
  30.  
  31. Values of command code:
  32.  01h "IPC_CMND_INQUIRE"  inquire current status
  33.         set status field, writes WORD to data buffer containing free
  34.           message space in bytes, and sets the "size" field to the
  35.           number of messages waiting
  36.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  37.         ignored unless called with the same ID that disabled PC-IPC
  38.  03h "IPC_CMND_DISABLE" disable PC-IPC
  39.  04h "IPC_CMND_INSTALL" reset PC-IPC
  40.  06h "IPC_CMND_RDATA"    read data
  41.         returns first message in data buffer, sets "size" to message
  42.           length and "to ID" field to sender's ID
  43.         if no messages available, bit 4 of status is cleared and "size"
  44.           is set to zero
  45.  07h "IPC_CMND_SDATA"    send data
  46.  08h "IPC_CMND_REQID"    require user ID
  47.         create a new recognized ID and return in "caller's ID" field
  48.  09h "IPC_CMND_DELID"    cancel user ID
  49.         delete caller's ID from pool of recognized IDs
  50.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  51.  0Bh "IPC_CMND_VERS"    get PC-IPC version 
  52.         string representing version returned in data buffer, "size"
  53.           field set to length of string
  54. ---------------------------------------------
  55. INT 60 - Tangram Arbiter - API
  56. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  57.     identified by string "@ARB_API" immediately following a short jump at
  58.       the interrupt handler address
  59.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  60.       IBM mainframe
  61. ---------------------------------------------
  62. INT 60 - FTP Driver - PC/TCP Packet Driver Specification
  63.    The handler for the interrupt will start with a 3-byte jump instruction, 
  64.    followed by the ASCIZ string "PKT DRVR".  To find the interrupt being used
  65.    by the driver, an application should scan through interrupt vectors 60h to
  66.    80h until it finds one with the "PKT DRVR" string.
  67. ---------------------------------------------
  68. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  69.     AH = 00h
  70. Return: AX = 0000h    profiling is off
  71.         otherwise profiling is on
  72. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  73. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  74. ---------------------------------------------
  75. INT 60 - FTP Driver - DRIVER INFO
  76.     AX = 01FFh
  77.     BX = handler returned by function 02h
  78. Return: CF set on error
  79.         DH = error code (see below)
  80.     CF clear if successful
  81.         BX = version
  82.         CH = network interface class (see below)
  83.         DX = interface type (see below)
  84.         CL = number
  85.         DS:SI -> name
  86.         AL = driver type
  87.         01h basic
  88.         02h extended
  89.         FFh not installed
  90.  
  91. Values for error code:
  92.     01h invalid handle number
  93.     02h no interfaces of the specified class found
  94.     03h no interfaces of the specified type found
  95.     04h no interfaces of the specified number found
  96.     05h bad packet type
  97.     06h interface does not support multicast messages
  98.     07h this packet driver cannot terminate
  99.     08h invalid receiver mode
  100.     09h insufficient space
  101.     0Ah type accessed but never released
  102.     0Bh bad command
  103.     0Ch packet could not be sent
  104.  
  105. Values for Network Interface classes/types:
  106.     Class 01h  Ethernet/IEEE 802.3     
  107.     01h 3COM 3C500/3C501
  108.     02h 3COM 3C505
  109.     03h MICOM-Interlan NI5010
  110.     04h BICC Data Networks 4110
  111.     05h BICC Data Networks 4117
  112.     06h MICOM-Interlan NP600
  113.     08h Ungermann-Bass PC-NIC
  114.     09h Univation NC-516
  115.     0Ah TRW PC-2000    
  116.     0Bh MICOM-Interlan NI5210
  117.     0Ch 3COM 3C503
  118.     0Dh 3COM 3C523
  119.     0Eh Western Digital WD8003
  120.     0Fh Spider Systems S4
  121.     Class 02h  ProNET-10
  122.     01h Proteon p1300
  123.     Class 03h  IEEE 802.5/ProNet-4
  124.     01h IBM Token-Ring Adapter
  125.     02h Proteon p1340
  126.     03h Proteon p1344
  127.     Class 04h  Omninet
  128.     Class 05h  Appletalk
  129.     Class 06h  Serial Line
  130.     Class 07h  StarLAN
  131.     Class 08h  ARCnet
  132.     01h Datapoint RIM    
  133. ---------------------------------------------
  134. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  135.     AH = 01h
  136. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  137. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  138. ---------------------------------------------
  139. INT 60 - FTP Driver - ACCESS TYPE
  140.     AH = 02h
  141.     AL = interface class
  142.     BX = interface type
  143.     DL = interface number
  144.     DS:SI -> type
  145.     CX = length of type
  146.     ES:DI -> receiver
  147. Return: CF set on error
  148.         DH = error code (see AX=01FFh)
  149.     CF clear if successful
  150.         AX = handle            
  151. SeeAlso: AH=03h"FTP"
  152.  
  153. Receiver is called with
  154.     AX = subfunction
  155.         00h application to return pointer to buffer in ES:DI
  156.         ES:DI = 0000h:0000h means throw away packet
  157.         01h copy to DS:SI buffer completed
  158.     BX = handle
  159.     CX = buffer length
  160. when a packet is received
  161. ---------------------------------------------
  162. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  163.     AH = 02h
  164. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  165. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  166. ---------------------------------------------
  167. INT 60 - FTP Driver - RELEASE TYPE
  168.     AH = 03h
  169.     BX = handle
  170. Return: CF set on error
  171.        DH = error code (see AX=01FFh)
  172.     CF clear if successful    
  173. SeeAlso: AH=02h"FTP"
  174. ---------------------------------------------
  175. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  176.     AH = 03h
  177. Return: ES:BX -> profiling table
  178. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  179. SeeAlso: AH=04h"SYS_PROF"
  180. ---------------------------------------------
  181. INT 60 - FTP Driver - SEND PACKET
  182.     AH = 04h
  183.     DS:SI -> buffer
  184.     CX = length
  185. Return: CF set on error
  186.         DH = error code (see AX=01FFh)
  187.     CF clear if successful
  188. ---------------------------------------------
  189. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  190.     AH = 04h
  191. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia #47
  192. SeeAlso: AH=03h"SYS_PROF"
  193. ---------------------------------------------
  194. INT 60 - FTP Driver - TERMINATE DRIVER FOR HANDLE
  195.     AH = 05h
  196.     BX = handle
  197. Return: CF set on error
  198.        DH = error code (see AX=01FFh)
  199.     CF clear if successful
  200. ---------------------------------------------
  201. INT 60 - FTP Driver - GET ADDRESS
  202.     AH = 06h
  203.     BX = handle
  204.     ES:DI -> buffer
  205.     CX = length
  206. Return: CF set on error
  207.         DH = error code (see AX=01FFh)
  208.     CF clear if successful
  209.         CX = length    
  210. Note:    copies the local net address associated with the handle into the buffer
  211. ---------------------------------------------
  212. INT 60 - FTP Driver - RESET INTERFACE
  213.     AH = 07h
  214.     BX = handle
  215. Return: CF set on error
  216.         DH = error code (see AX=01FFh)
  217.     CF clear if successful
  218. ---------------------------------------------
  219. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  220.     AH = 0Ch
  221. Return: AL = status
  222.         00h successful
  223.         ES:SI -> 6-byte station address
  224.         02h semaphore service is unavailable
  225. ---------------------------------------------
  226. INT 60 - 10-NET, Banyan VINES - LOCK AND WAIT
  227.     AH = 11h
  228.     AL = drive number or 0
  229.     DX = number of seconds to wait
  230.     ES:SI = Ethernet address or 0
  231.     DS:BX -> 31-byte ASCIZ semaphore name
  232. Return: AL = status
  233.         00h successful
  234.         01h timeout
  235.         02h server not responding
  236.         03h invalid semaphore name
  237.         04h semaphore list is full
  238.         05h invalid drive ID
  239.         06h invalid Ethernet address
  240.         07h not logged in
  241.         08h write to network failed
  242.         09h semaphore already logged for this CPU
  243. SeeAlso: AH=12h,13h
  244. ---------------------------------------------
  245. INT 60 - 10-NET, Banyan VINES - LOCK
  246.     AH = 12h
  247.     AL = drive number or 00h
  248.     ES:SI = Ethernet address or 0000h:0000h
  249.     DS:BX -> 31-byte ASCIZ semaphore name
  250. Return: AL = status (see also AH=11h)
  251.         01h semaphore currently locked by another PC
  252. Note:    unlike function 11h, this function returns immediately
  253. SeeAlso: AH=11h,13h
  254. ---------------------------------------------
  255. INT 60 - 10-NET, Banyan VINES - UNLOCK
  256.     AH = 13h
  257.     AL = drive number or 00h
  258.     ES:SI = Ethernet address or 0000h:0000h
  259.     DS:BX -> 31-byte ASCIZ semaphore name
  260. Return: AL = status (see also AH=11h)
  261.         1 semaphore not locked
  262. SeeAlso: AH=11h,12h
  263. ---------------------------------------------
  264. INT 60 - FTP Driver - SET RECEIVE MODE
  265.     AH = 20h
  266.     BX = handle
  267.     CX = mode
  268.         01h turn off receiver
  269.         02h receive only packets sent to this interface
  270.         03h mode 2 plus broadcast packets
  271.         04h mode 3 plus limited multicast packets
  272.         05h mode 3 plus all multicast packets
  273.         06h all packets
  274. Return: CF set on error
  275.        DH = error code
  276.     CF clear if successful
  277. SeeAlso: AH=21h
  278. ---------------------------------------------
  279. INT 60 - FTP Driver - GET RECEIVE MODE
  280.     AH = 21h
  281.     BX = handle
  282. Return: CF set on error
  283.         DH = error code (see AX=01FFh)
  284.     CF clear if successful
  285.         AX = mode    
  286. SeeAlso: AH=20h
  287. ---------------------------------------------
  288. INT 60 - FTP Driver - GET STATISTICS
  289.     AH = 24h
  290.     BX = handle
  291. Return: CF set on error
  292.         DH = error code
  293.     CF clear if successful
  294.         DS:SI -> statistics (see below)
  295.  
  296. Format of statistics:
  297. Offset    Size    Description
  298.  00h    DWORD    packets in
  299.  04h    DWORD    packets out
  300.  08h    DWORD    bytes in
  301.  0Ch    DWORD    bytes out
  302.  10h    DWORD    errors in
  303.  14h    DWORD    errors out
  304.  18h    DWORD    packets dropped    
  305. ---------------------------------------------
  306. INT 61 - reserved for user interrupt
  307. ---------------------------------------------
  308. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  309. ---------------------------------------------
  310. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  311.     AX = 0001h
  312.     DS:DX -> communications control block (function 0001h)
  313. Return: AX = status
  314.         0000h  successful
  315.         0001h  service not installed
  316.         0002h  invalid service ID
  317.         0098h  resource already in use
  318.         009Eh  address family does not exist
  319.         009Fh  socket type does not exist
  320.         00A0h  protocol does not exist
  321.         00A1h  no more sockets available
  322.         00A2h  no more buffer space available
  323. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  324.       interrupt handler is identified by the string "BANV" in the four
  325.       bytes immediately preceding the interrupt handler
  326.  
  327. Format of control block:
  328. Offset    Size    Description
  329.  00h    WORD    0001h
  330.  02h    WORD    pointer to argument block
  331.  04h    WORD    error return code
  332.  06h  4 BYTEs    reserved
  333.  
  334. Format of argument block:
  335. Offset    Size    Description
  336.  00h    WORD    pointer to 2-byte buffer for socket identifier
  337.  02h    WORD    address family
  338.         0003h Banyan
  339.  04h    WORD    socket type
  340.         in address family 0003h
  341.             0001h IPC socket
  342.             0002h SPP socket
  343.  06h    WORD    protocol number
  344.         FFFFh default
  345.  08h    WORD    pointer to 16-byte buffer for socket address
  346.  0Ah    WORD    local port number
  347.         0000h if service should assign transient port number
  348.         0001h to 01FFh well-known port number (assigned by Banyan)
  349.  
  350. Format of IPC port:
  351. Offset    Size    Description
  352.  00h    WORD    address family (always 0003h for Banyan ports)
  353.  04h  4 BYTEs    network number (server's serial number)
  354.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  355.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  356.  0Ah    BYTE    hop count
  357.  0Bh  5 BYTEs    filler
  358. ---------------------------------------------
  359. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  360.     AX = 0001h
  361.     DS:DX -> communications control block (function 0002h)
  362. Return: AX = status
  363.         0000h  successful
  364.         0001h  service not installed
  365.         0002h  invalid service ID
  366.         0003h-000Ah reserved for BANV interface errors
  367.         0097h  invalid socket identifier
  368.         009Bh  destination node unreachable
  369.         009Ch  message overflow
  370.         009Dh  destination socket nonexistent
  371.         00A2h  no more buffer space
  372.         00A3h  timeout
  373.         00B1h  resource disconnect
  374. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  375.       interrupt handler is identified by the string "BANV" in the four
  376.       bytes immediately preceding the interrupt handler
  377.  
  378. Format of control block:
  379. Offset    Size    Description
  380.  00h    WORD    0002h
  381.  02h    WORD    pointer to argument block (see below)
  382.  04h    WORD    error return code
  383.         0000h successful
  384.         0097h invalid socket ID
  385.         00A2h no more buffer space
  386.         00A3h timeout event
  387.         00A5h resource not available
  388.         00A6h internal communication failure
  389.         00B1h resource disconnect
  390.  06h  4 BYTEs    reserved
  391.  
  392. Format of argument block:
  393. Offset    Size    Description
  394.  00h    WORD    routine metric
  395.  02h    WORD    error return code
  396.  04h    WORD    socket identifier
  397.  06h    WORD    pointer to send buffer
  398.  08h    WORD    length of send buffer
  399.  0Ah    WORD    flags
  400.         bit 0: async request
  401.             1: reliable message
  402.             3: end of user message received
  403.             4: vectored request (if set, send buffer contains buffer
  404.             descriptors)
  405.             5: connection-specific receive
  406.             6: change to connection-specific receive mode
  407.  0Ch 16 BYTEs    socket address (see below)
  408.  1Ch    WORD    timeout value in multiples of 200ms
  409.  1Eh    WORD    connection identifier
  410.  20h    WORD    type of request
  411.         0001h send message
  412.         0002h establish a virtual connection
  413.         0003h terminate a virtual connection
  414.  
  415. Format of buffer descriptor:
  416. Offset    Size    Description
  417.  00h    WORD    data segment
  418.  02h    WORD    buffer pointer
  419.  04h    WORD    buffer length
  420.  06h    WORD    character count
  421.  
  422. Format of socket address for unreliable datagrams:
  423. Offset    Size    Description
  424.  00h    WORD    0003h      address family
  425.  02h    DWORD    FFFFFFFFh network number
  426.  06h    WORD    FFFFh      subnet number
  427.  08h    WORD          local port number
  428.  0Ah    BYTE    00h-0Fh      hop count
  429.  0Bh  5 BYTEs    0000h      filler
  430. ---------------------------------------------
  431. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  432.     AX = 0001h
  433.     DS:DX -> communications control block (function 0003h)
  434. Return: AX = status
  435.         0000h  successful
  436.         0001h  service not installed
  437.         0002h  invalid service ID
  438.         0003h-000Ah reserved for BANV interface errors
  439.         0097h  invalid socket identifier
  440.         00A2h  no more buffer space
  441.         00A3h  timeout
  442. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  443.       interrupt handler is identified by the string "BANV" in the four
  444.       bytes immediately preceding the interrupt handler
  445.  
  446. Format of control block:
  447. Offset    Size    Description
  448.  00h    WORD    0003h
  449.  02h    WORD    pointer to argument block (see below)
  450.  04h    WORD    error return code
  451.         0000h successful
  452.         0097h invalid socket ID
  453.         00A2h no more buffer space
  454.         00A3h timeout event
  455.         00A5h resource not available
  456.         00A6h internal communication failure
  457.         00B1h resource disconnect
  458.  06h  4 BYTEs    reserved
  459.  
  460. Format of argument block:
  461. Offset    Size    Description
  462.  00h    WORD    character count
  463.  02h    WORD    error return code
  464.  04h    WORD    socket identifier
  465.  06h    WORD    pointer to receive buffer
  466.  08h    WORD    length of receive buffer
  467.  0Ah    WORD    flags
  468.         bit 0: async request
  469.             2: flush receive buffer on overflow
  470.             3: end of user message received
  471.             4: vectored request (if set, receive buffer contains buffer
  472.             descriptors)
  473.             5: connection-specific receive
  474.             6: change to connection-specific receive mode
  475.  0Ch 16 BYTEs    socket address
  476.  1Ch    WORD    timeout value in multiples of 200ms
  477.  1Eh    WORD    connection identifier
  478.  20h    WORD    type of response
  479.         0001h message received
  480.         0002h virtual connection established
  481.         0003h virtual connection terminated
  482.  
  483. Format of buffer descriptor:
  484. Offset    Size    Description
  485.  00h    WORD    data segment
  486.  02h    WORD    buffer pointer
  487.  04h    WORD    buffer length
  488.  06h    WORD    character count
  489. ---------------------------------------------
  490. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  491.     AX = 0001h
  492.     DS:DX -> communications control block (function 0004h)
  493. Return: AX = status
  494.         0000h  successful
  495.         0001h  service not installed
  496.         0002h  invalid service ID
  497.         0003h-000Ah reserved for BANV interface errors
  498.         0097h  invalid socket identifier
  499. Note:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  500.       interrupt handler is identified by the string "BANV" in the four
  501.       bytes immediately preceding the interrupt handler
  502.  
  503. Format of control block:
  504. Offset    Size    Description
  505.  00h    WORD    0004h
  506.  02h    WORD    pointer to argument block (see below)
  507.  04h    WORD    error return code
  508.  06h  4 BYTEs    reserved
  509.  
  510. Format of argument block:
  511. Offset    Size    Description
  512.  00h    WORD    socket identifier
  513. ---------------------------------------------
  514. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  515.     AX = 0001h
  516.     DS:DX -> communications control block (function 0005h)
  517. Return: AX = status
  518.         0000h  successful
  519.         0001h  service not installed
  520.         0002h  invalid service ID
  521.         0003h-000Ah reserved for BANV interface errors
  522.         00A2h  no more buffer space available
  523.         00A3h  timeout event
  524. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  525.       interrupt handler is identified by the string "BANV" in the four
  526.       bytes immediately preceding the interrupt handler
  527.     returns results for all asynchronous operations invoked from the
  528.       data segment used for this call
  529.  
  530. Format of control block:
  531. Offset    Size    Description
  532.  00h    WORD    0005h
  533.  02h    WORD    pointer to argument block (see below)
  534.  04h    WORD    error return code
  535.  06h  4 BYTEs    reserved
  536.  
  537. Format of argument block:
  538. Offset    Size    Description
  539.  00h    WORD    pointer to WORD event pointer
  540.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  541. ---------------------------------------------
  542. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  543.     AX = 0001h
  544.     DS:DX -> communications control block (function 0008h)
  545. Return: AX = status
  546.         0000h  successful
  547.         00A2h  no more buffer space available
  548. Note:    BANYAN can use any interrupt from 60h through 66h (default 61h).  The
  549.       Banyan interrupt handler is identified by the string "BANV" in the
  550.       four bytes immediately preceding the interrupt handler
  551.  
  552. Format of control block:
  553. Offset    Size    Description
  554.  00h    WORD    0008h
  555.  02h    WORD    process type
  556.         0001h transient process
  557.         0002h resident process
  558.  04h    WORD    error return code
  559.  06h  4 BYTEs    reserved
  560. ---------------------------------------------
  561. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  562.     AX = 0001h
  563.     DS:DX -> communications control block (function 000Bh)
  564. Return: AX = status
  565.         0000h  successful
  566.         0001h  service not installed
  567.         0002h  invalid service ID
  568.         0003h-000Ah reserved for BANV interface errors
  569.         00A2h  no more buffer space available
  570. Notes:    BANYAN can use any interrupt from 60h through 66h.  The Banyan
  571.       interrupt handler is identified by the string "BANV" in the four
  572.       bytes immediately preceding the interrupt handler
  573.     FAR user function is invoked with SS,DS, and ES set to segment of
  574.       control block, and with the stack containing
  575.         DWORD    return address
  576.         WORD    argument pointer (sosend or sorec argument block)
  577.         WORD    error return code
  578.             0000h argument pointer is valid
  579.             00A3h timeout
  580.  
  581. Format of control block:
  582. Offset    Size    Description
  583.  00h    WORD    000Bh
  584.  02h    WORD    pointer to argument block (see below)
  585.  04h    WORD    error return code
  586.  06h  2 BYTEs    reserved
  587.  08h    WORD    user CS register
  588.  
  589. Format of argument block:
  590. Offset    Size    Description
  591.  00h    WORD    pointer to user interrupt function    
  592.  02h    WORD    pointer to user stack
  593.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  594. ---------------------------------------------
  595. INT 61 - Banyan VINES - 3270 INTERFACE
  596.     AX = 0002h
  597.     BH = function
  598.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  599.         02h "pi2bsc" (3270/BSC only)
  600.         03h    "pi2get"    get information stored in 3270 resident driver
  601.         04h "pi2put"    store information in 3270 resident driver
  602.         05h "pi2gcur"   get current screen position
  603.         07h "pi2sdat"   send data keystroke
  604.         08h "pi2scom"   send command keystroke
  605.         0Ah "pi2field"  get field info for arbitrary screen positions
  606.         0Fh "pi2stat"   get logical unit/device status
  607.         12h "pi2nlus"   determine logical unit/device assignment
  608.         13h "pi2gate"   specifies comm port address to gateway service
  609.         14h "pi2attach" attach a logical unit/device
  610.         15h "pi2sdev"   save logical unit/device info in resident driver
  611.                 (not supported in >3.0)
  612.         16h "pi2gdev"   get device information (not supported in >3.0)
  613.         17h "pi2luinfo" get info about specific logical unit/device
  614.         18h "pi2gerr"   get finer error detail
  615.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  616.         1Ah "pi2shut"   release memory-resident module
  617.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  618.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  619.     DS:CX -> argument block (except BH=00h,1Ah)
  620. Return: AX = status
  621.         0000h successful
  622.         000Bh invalid parameter or data does not fit data area
  623.         000Ch another code path currently active in resident driver
  624.         000Dh operation currently not allowed
  625.         0032h encountered connection disconnect error
  626.         0033h encountered "sosend" completion error
  627.         0034h encountered "sosend" communication error
  628.         0035h attach request refused.  extended error info via "pi2gerr":
  629.             01h resource unavailable
  630.             02h invalid type
  631.             03h version mismatch
  632.             04h invalid logical unit number
  633.             05h error during ARL processing
  634.             06h no access for user
  635.         0071h encountered "sosock" error
  636.         0072h encountered unrecognizable error
  637.         0073h encountered "sowait" error (extended info via "pi2gerr")
  638.         0074h encountered invalid type-of-request on "sowait"
  639.         0075h encountered "sorec" error (extended info via "pi2gerr")
  640.         0076h encountered "sorec" completion error (ext info via "pi2gerr")
  641.         0077h encountered connection request
  642.         0078h encountered unrecognizable data
  643.         0079h encountered unknown connection ID (ext info via "pi2gerr")
  644. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  645.       which is loaded first.  The other interface will use AX=000Ah
  646.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  647.       or 3270/BSC resident driver, which must be reloaded by the user
  648.  
  649. Format of argument block for BH=03h,04h:
  650. Offset    Size    Description
  651.  00h    WORD    size of data area (max 256)
  652.  02h  N BYTEs    data area
  653.  
  654. Format of argument block for BH=05h:
  655. Offset    Size    Description
  656.  00h    WORD    logical unit/device number
  657.  02h    WORD    pointer to WORD buffer for cursor index
  658.  04h    WORD    pointer to BYTE buffer for current field attribute
  659.  
  660. Format of argument block for BH=07h:
  661. Offset    Size    Description
  662.  00h    WORD    logical unit/device number
  663.  02h    WORD    ASCII data byte
  664.  04h    WORD    pointer to WORD count of characters which will need updating
  665.  
  666. Format of argument block for BH=08h:
  667. Offset    Size    Description
  668.  00h    WORD    logical unit/device number
  669.  02h    WORD    keystroke
  670.         0000h Enter
  671.         0001h Clear
  672.         0002h PA1
  673.         0003h PA2
  674.         0004h PA3
  675.         0005h PF1
  676.         ...
  677.         001Ch PF24
  678.         001Dh CSELECT (cursor select)
  679.         001Eh Insert
  680.         001Fh Delete
  681.         0020h EOField
  682.         0021h EINPUT (erase input)
  683.         0022h Reset
  684.         0023h Attention
  685.         0024h SysReq
  686.         0025h Duplicate
  687.         0026h Fieldmark
  688.         0027h Home
  689.         0028h NextLine
  690.         0029h Tab
  691.         002Ah BackTab
  692.         002Bh cursor up
  693.         002Ch cursor down
  694.         002Dh cursor right
  695.         002Eh cursor left
  696.         002Fh double cursor right
  697.         0030h double cursor left
  698.         0031h PRINT
  699.         0032h CANCEL
  700.         0033h Backspace
  701.  
  702. Format of argument block for BH=0Ah:
  703. Offset    Size    Description
  704.  00h    WORD    logical unit/device number
  705.  02h    WORD    screen index
  706.  04h    WORD    pointer to WORD buffer for field length
  707.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  708.  
  709. Format of argument block for BH=0Fh:
  710. Offset    Size    Description
  711.  00h    WORD    logical unit/device number
  712.  02h    WORD    clear mask (clear these bits of status after returning status)
  713.  04h    WORD    pointer to WORD buffer for status
  714.         bit 10: status modified
  715.         bit  9: buffer modified
  716.         bit  8: set cursor
  717.         bit  5: sound alarm
  718.         bits 0,1: size of print line for printer logical units
  719.             00 unformatted line
  720.             01 40-character line
  721.             10 64-character line
  722.             11 80-character line
  723.  
  724. Format of argument block for BH=12h:
  725. Offset    Size    Description
  726.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  727.  02h    WORD    pointer to WORD buffer for version number
  728.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  729.  
  730. Format of argument block for BH=13h:
  731. Offset    Size    Description
  732.  00h 16 BYTEs    communications port address (see AX=0001h#"Sosock")
  733.  
  734. Format of argument block for BH=14h:
  735. Offset    Size    Description
  736.  00h    WORD    logical unit/device number 
  737.         0000h attach any free device of the specified type
  738.  02h    WORD    logical unit/device type
  739.         (3270/SNA) 01h, 02h, or 03h
  740.         (3270/BSC) 02h display
  741.         (3270/BSC) 03h printer
  742.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  743.  
  744. Format of argument block for BH=16h:
  745. Offset    Size    Description
  746.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  747.         first WORD must be set to desired logical unit/device number
  748.  
  749. Format of argument block for BH=17h:
  750. Offset    Size    Description
  751.  00h    WORD    logical unit/device number
  752.  02h    WORD    pointer to information block in caller's DS (see below)
  753.  
  754. Format of argument block for BH=18h:
  755. Offset    Size    Description
  756.  00h    WORD    pointer to WORD buffer for major error code
  757.  02h    WORD    pointer to WORD buffer for minor error code
  758.  
  759. Format of argument block for BH=19h:
  760. Offset    Size    Description
  761.  00h    WORD    logical unit/device number
  762.  
  763. Format of argument block for BH=1Ch,1Dh:
  764. Offset    Size    Description
  765.  00h    WORD    pointer to profile block in caller's DS (see below)
  766.  
  767. Format of device block, argument block for BH=15h:
  768. Offset    Size    Description
  769.  00h    WORD    logical unit/device number
  770.  02h    WORD    logical unit/device type
  771.  04h    WORD    display model number
  772.  06h    WORD    numeric checking
  773.  08h    WORD    status line
  774.  0Ah    BYTE    unprotected normal field attribute
  775.  0Bh    BYTE    unprotected intensified field attribute
  776.  0Ch    BYTE    protected normal field attribute
  777.  0Dh    BYTE    protected intensified field attribute
  778.  0Eh    WORD    reserved
  779.  10h    WORD    printer port number
  780.  
  781. Format of information block:
  782. Offset    Size    Description
  783.  00h    WORD    device model number
  784.  02h    DWORD    screen buffer pointer
  785.  06h    DWORD    status line pointer (see below)
  786.  0Ah    DWORD    reserved
  787.  
  788. Format of status line:
  789. Offset    Size    Description
  790.  00h    BYTE    comm line status
  791.         00h inactive
  792.         01h active
  793.  01h    BYTE    activation level
  794.         01h physical unit activated
  795.         02h logical unit also activated
  796.         03h session is bound
  797.  02h    BYTE    data traffic state
  798.         00h inactive
  799.         01h active
  800.  03h    BYTE    screen ownership
  801.         00h SLU->PLU sessoin owns screen
  802.         01h SLU->SSCP session owns screen
  803.  04h    BYTE    keyboard status
  804.         00h UNLOCK - ready to accept data
  805.         01h TIME - aid was struck
  806.         02h SYSTEM - received response no restore
  807.         03h FUNCTION - unavailable keyboard function
  808.         04h INPUT - not currently used
  809.         05h ENDFIELD - field filled in insert mode
  810.         06h PROTECTED - attempt to enter in protected field
  811.         07h NUMERIC - attempt to enter in numeric field
  812.         08h PROGRAM - error in outbound data stream
  813.  05h    BYTE    insert mode
  814.         01h if in insert mode
  815.  06h    BYTE    numeric
  816.         01h if current screen buffer is numeric only
  817.  07h    BYTE    printer status
  818.         00h printer not assigned
  819.         01h printer is inactive
  820.         02h printer error
  821.         03h currently printing
  822.         04h printer is busy
  823.         05h printer is very busy
  824.  08h    BYTE    printer assignment
  825.  09h    BYTE    maximum size of network name
  826.  0Ah  N BYTEs    ASCIZ network name
  827.     BYTE    maximum size of message window
  828.       M BYTEs    null-terminated message window
  829.     BYTE    code set
  830.         00h EBCDIC
  831.         01h ASCII
  832.       M BYTEs    extended attributes
  833.         01h extended attributes are in effect (stored at screen+1920)
  834.             each extended attribute specifies
  835.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  836.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  837.                   100=green,101=turquoise,110=yellow,111=white
  838.     BYTE    extended color
  839.         01h other than base color is in effect
  840.  
  841. Format of profile block:
  842. Offset    Size    Description
  843.  00h 64 BYTEs    gateway service name
  844.  40h 16 BYTEs    gateway comm port address
  845.  50h    WORD    primary logical unit number
  846.  52h    WORD    secondary logical unit type
  847.  54h    WORD    secondary logical unit number
  848.  56h    WORD    printer assignment
  849.  58h 50 BYTEs    keyboard definitions filename
  850. ---------------------------------------------
  851. INT 61 - Banyan VINES - ASYNCHRONOUS TERMINAL EMULATION
  852.     AX = 0003h
  853.     DS:BX -> argument block with function number (see below)
  854. Return: AX = status
  855.         0000h successful
  856.         000Bh invalid session ID
  857.         000Ch session not active
  858.         000Dh invalid request type
  859.         000Eh invalid parameters
  860.         000Fh out of heap space
  861.         0010h timeout on send
  862.         0011h Banyan communications error
  863.         0012h session not waiting for host
  864.         0013h session is active
  865.         0014h duplicate suspend session request
  866.         0015h no session suspended
  867.         0016h ring data buffer full
  868.         0017h printer error encountered
  869.         0018h Banyan communications error
  870.         0019h unable to make connection
  871.         001Ah no ring buffer specified at startup
  872.         001Bh service is down
  873.         001Ch invalid service name
  874.         001Dh service is closed
  875.         001Eh invalid connection name
  876.         001Fh max session limit reached for service
  877.         0020h access rights list for connection/dialout does not include
  878.             this user
  879.         0021h service not responding
  880.         0022h missing telephone number
  881.  
  882. Format of argument block:
  883. Offset    Size    Description
  884.  00h    BYTE    session ID (00h)
  885.  01h    BYTE    asynchronous interface request number
  886.         00h initialize user buffer pointer information area
  887.         01h send to host
  888.         02h "control monitor"
  889.         03h "flow control data": freeze/unfreeze display, ring buffer
  890.         04h end active session
  891.         05h set session parameter
  892.         06h get session parameter
  893.         07h set tab settings
  894.         08h get tab settings
  895.         09h refresh emulation screen
  896.         0Ah suspend session temporarily
  897.         0Bh restore previously suspended session
  898.         0Ch set state of scroll lock checking
  899.         0Dh exit emulation
  900.         0Eh interrupt on character from host
  901.         0Fh start a session
  902.         10h start/stop printing of data received from host
  903.         11h get file transfer parameters
  904.         12h get connection information
  905.         13h start/stop tracing data traffic in session
  906.         14h interrupt on message from host
  907.         15h reset error
  908. ---request=00h---
  909.  02h    WORD    pointer to info area in caller's current DS
  910.         Offset    Size    Description
  911.          00h    WORD    flags
  912.                 0000h don't read interface's data buffer
  913.                 0001h read data buffer
  914.          02h    DWORD    pointer to ring buffer
  915.          06h    WORD    length of ring buffer
  916.          08h    WORD    ring buffer offset to last byte read by caller
  917.          0Ah    DWORD    pointer to WORD containing offset of last byte
  918.                   in ring buffer filled
  919.          0Eh    DWORD    pointer to screen buffer
  920.          12h    DWORD    pointer to field containing cursor position
  921.          16h    DWORD    pointer to terminal status area (see below)
  922. ---request=01h---
  923.  02h    BYTE    type
  924.         00h ASCII byte
  925.         01h ASCII string
  926.         02h terminal function code
  927.         03h up arrow
  928.         04h down arrow
  929.         05h left arrow
  930.         06h right arrow
  931.         07h break
  932.  03h  N BYTEs    type-specific info
  933.         Offset    Size    Description
  934.         ---ASCII byte---
  935.          03h    BYTE    byte to send to host
  936.         ---ASCII string---
  937.          03h    WORD    length of string
  938.          05h    WORD    pointer to string
  939.         ---terminal function code (VT52/VT100)---
  940.          03h    BYTE    function code
  941.                 00h keypad 0
  942.                 01h keypad 1
  943.                 ...
  944.                 09h keypad 9
  945.                 0Ah keypad -
  946.                 0Bh keypad ,
  947.                 0Ch keypad .
  948.                 0Dh keypad ENTER
  949.                 0Eh PF1
  950.                 0Fh PF2
  951.                 10h PF3
  952.                 11h PF4
  953.         ---terminal function code (IBM3101)---
  954.          03h    BYTE    function code
  955.                 00h PF1
  956.                 ...
  957.                 07h PF8
  958.                 08h Home
  959. ---request=02h---
  960.  02h    BYTE    display flag
  961.         00h don't display data received from host
  962.         01h display data
  963. ---request=03h---
  964.  02h    BYTE    flow control flag
  965.         00h allow characters to be put into display or ring buffer
  966.         01h don't place any more characters into display or ring buffer
  967. ---request=05h,06h---
  968.  02h    BYTE    parameter number
  969.         00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  970.             05h=300,06h=600,07h=1200,08h=2400,09h=4800, 0Ah=9600)
  971.         01h parity (00h=none, 01h=odd, 02h=even)
  972.         02h duplex (00h=full, 01h=half)
  973.         03h character size (00h=7 bits, 01h=8 bits)
  974.         04h stop bits (00h=1, 01h=2)
  975.         05h XON/XOFF flow control (00h=no, 01h=yes)
  976.         07h intercharacter delay in tenths of a second
  977.         08h interline delay in tenths of a second
  978.         09h auto linefeed (00h=no, 01h=yes)
  979.         0Ah filter control characters (00h=no, 01h=yes)
  980.         0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  981.         0Ch auto wrap (00h=no, 01h=yes)
  982.         0Dh cursor shape (00h=underscore, 01h=block)
  983.         0Eh character set (00h=UK, 01h=US ASCII)
  984.         0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  985.  03h    BYTE    parameter value (returned for 06h)
  986. ---request=07h,08h---
  987.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  988.           each byte = 00h if no tab, 01h if tab at that position
  989. ---request=0Ah---
  990.  02h    WORD    size of session information to be saved
  991.  04h    WORD    pointer to buffer in caller's DS
  992. ---request=0Bh---
  993.  02h    WORD    size of buffer into which session info is restored
  994.  04h    WORD    pointer to buffer in caller's DS
  995. ---request=0Ch---
  996.  02h    BYTE    check_scroll_lock flag
  997.         00h off
  998.         01h on (display of host data stopped while ScrollLock on)
  999. ---request=0Eh,14h---
  1000.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1001.  06h    DWORD    stack pointer to use when call is made
  1002. ---request=0Fh---
  1003.  02h    WORD    pointer to information area in caller's current DS
  1004.         Offset    Size    Description
  1005.          00h    WORD    length of service name
  1006.          02h    WORD    pointer to service name in caller's DS
  1007.          04h    BYTE    type of connection
  1008.                 (00h=connection name, 01h=dialout)
  1009.          05h    WORD    length of connection name/telephone number
  1010.          07h    WORD    pointer to connection name/telephone number
  1011. ---request=10h---
  1012.  02h    WORD    print capture flag (00h=off, 01h=on)
  1013. ---request=11h---
  1014.  02h    WORD    pointer to info area in caller's current DS
  1015.         Offset    Size    Description
  1016.          00h    BYTE    protocol flag (00h none, 01h Kermit)
  1017.          01h    BYTE    direction flag (00h send, 01h receive)
  1018.          02h    BYTE    length of null-terminated PC filename
  1019.          03h    DWORD    pointer to null-terminated PC filename
  1020.          07h    BYTE    length of null-terminated host filename
  1021.          08h    DWORD    pointer to null-terminated host filename
  1022. ---request=12h---
  1023.  02h    WORD    pointer to info area in caller's current DS (see below)
  1024.         Offset    Size    Description
  1025.          00h    WORD    length of service name (returned)
  1026.          02h    WORD    pointer to 64-byte buffer for service name
  1027.          04h    BYTE    type of connection
  1028.                 00h connection name
  1029.                 01h dialout
  1030.          05h    WORD    length of connection name/telephone number
  1031.          07h    WORD    pointer to 64-byte buffer for name/telno
  1032.          09h    BYTE    server line number being used (returned)
  1033. ---request=13h---
  1034.  02h    BYTE    trace flag (00h=off, 01h=on)
  1035.  
  1036. Format of terminal status area:
  1037. Offset    Size    Description
  1038.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  1039.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  1040.  02h    BYTE    current keypad mode (VT100,VT52 only)
  1041.         4Eh ("N") numeric mode
  1042.         41h ("A") application mode
  1043.  03h  4 BYTEs    current state of LEDs (VT100 only)
  1044.         00h off
  1045.         01h on
  1046.  07h    WORD    line error count
  1047.  09h    WORD    primary error code
  1048.         0000h no error
  1049.         0001h unable to make connection
  1050.         0002h communications error, restart session
  1051.         0003h async terminal emulation service unavailable
  1052.         0004h lost carrier
  1053.         0005h all matching lines busy
  1054.         0006h no lines defined for connection name
  1055.         0007h no dial lines available on server
  1056.         0008h no matching dial lines available
  1057.         0009h out of heap space
  1058.         000Ah service error encountered
  1059.         000Bh timed out waiting to connect
  1060.         000Ch communications error
  1061.         000Dh communications error
  1062.         000Eh host want file transferred to/from PC
  1063.         000Fh host software changed session parameter
  1064.         0010h host software changed tap settings
  1065.         0011h host software changed LED indicator
  1066.         0012h host software changed display background (secondary error
  1067.             code 00h for white on black, 01h for black on white)
  1068.         0013h host software changed display option (secondary error
  1069.             code 00h for off, 01h for on)
  1070.         0014h communications error
  1071.         0015h communications error
  1072.         0016h unable to make connection
  1073.         0017h unable to make connection
  1074.  0Bh    WORD    secondary error code
  1075. ---------------------------------------------
  1076. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1077.     AX = 0004h
  1078.     DS:DX -> request block (function 0008h)
  1079. Return: AX = status
  1080.         0000h server ID returned in request block
  1081.         000Fh invalid drive
  1082.         0015h drive not ready
  1083.  
  1084. Format of request block:
  1085. Offset    Size    Description
  1086.  00h    WORD    0008h
  1087.  02h    WORD    drive number (0=default, 1=A, ...)
  1088.  04h  6 BYTEs    buffer for server ID
  1089. ---------------------------------------------
  1090. INT 61 - Banyan VINES - PRINTER CONTROL
  1091.     AX = 0005h
  1092.     DS:DX -> request block
  1093. Return: AX = status
  1094.         0000h successful
  1095.         0001h network software not installed or incompatible
  1096.  
  1097. Format of request block:
  1098. Offset    Size    Description
  1099.  00h    WORD    function
  1100.         0201h "endspool" all data for a print job has been sent
  1101.         0205h "getactive" get currently active printer port
  1102.  02h    WORD    number of active port (1-3)
  1103.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1104.  06h    WORD    0000h
  1105. ---------------------------------------------
  1106. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1107.     AX = 0007h
  1108.     BX = 0002h
  1109.     DS:DX -> StreetTalk service name
  1110.     DS:DI -> port record block (see below)
  1111. Return: AX = status
  1112.         0000h successful
  1113.         0001h PC network software not installed or incompatible
  1114.         03E9h incorrect name syntax
  1115.         03EAh organization name too long
  1116.         03EBh group name too long
  1117.         03ECh item name too long
  1118.         03EDh StreetTalk name too long
  1119.         03F3h organization not found
  1120.         03F4h group not found
  1121.         03F5h StreetTalk name not found
  1122.         03F8h not a StreetTalk name
  1123.         040Dh appropriate StreetTalk name unavailable
  1124.  
  1125. Format of port record block:
  1126. Offset    Size    Description
  1127.  00h    WORD    number of 17-byte elements
  1128.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1129.         (see AX=0001h#"Sosock" for port format)
  1130. ---------------------------------------------
  1131. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1132.     AX = 0007h
  1133.     BX = 0004h
  1134.     DS:DX -> StreetTalk name of service
  1135.     DS:DI -> port record block (see below)
  1136. Return: AX = status
  1137.         0000h successful
  1138.         0001h PC network software not installed or incompatible
  1139.         03E9h incorrect name syntax
  1140.         03EAh organization name too long
  1141.         03EBh group name too long
  1142.         03ECh item name too long
  1143.         03EDh StreetTalk name too long
  1144.         03F3h organization not found
  1145.         03F4h group not found
  1146.         03F5h StreetTalk name not found
  1147.         03F8h not a StreetTalk name
  1148.         0409h modify access denied
  1149.         040Dh appropriate StreetTalk name unavailable
  1150.  
  1151. Format of port record block:
  1152. Offset    Size    Description
  1153.  00h    WORD    number of 17-byte elements
  1154.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1155.         (see AX=0001h#"Sosock" for port format)
  1156. ---------------------------------------------
  1157. INT 61 - Banyan VINES - GET USER NAME
  1158.     AX = 0007h
  1159.     BX = 0005h
  1160.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1161. Return: AX = status
  1162.         0000h successful
  1163.         0001h network software not installed or incompatible
  1164. Note:    if no user logged in, first byte of returned name will be 00h
  1165. ---------------------------------------------
  1166. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1167.     AX = 0007h
  1168.     BX = 0006h
  1169.     SI = error code (>100)
  1170.     DS:DX -> 80-byte buffer for error text
  1171. Return: AX = status
  1172.         0000h successful
  1173.         0001h network software not installed or incompatible        
  1174. ---------------------------------------------
  1175. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1176.     AX = 0007h
  1177.     BX = 0007h
  1178.     DS:DX -> NiceName block (see below)
  1179. Return: AX = status
  1180.         0000h successful
  1181.         0001h PC network software not installed or incompatible
  1182.         03E9h incorrect name syntax
  1183.         03EAh organization name too long
  1184.         03EBh group name too long
  1185.         03ECh item name too long
  1186.         03EDh StreetTalk name too long
  1187.         03F3h organization not found
  1188.         03F4h group not found
  1189.         03F5h StreetTalk name not found
  1190.         03F8h not a StreetTalk name
  1191.         040Dh appropriate StreetTalk name unavailable
  1192. SeeAlso: AX=0007h/BX=0008h
  1193.  
  1194. Format of NiceName block:
  1195. Offset    Size    Description
  1196.  00h    WORD    type of name
  1197.         0064h organization
  1198.         00C8h group
  1199.         012Ch item
  1200.  02h    WORD    pointer to ASCIZ input name
  1201.  04h    WORD    pointer to 64-byte buffer for output name
  1202. ---------------------------------------------
  1203. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1204.     AX = 0007h
  1205.     BX = 0008h
  1206.     DS:DX -> enumerate block (see below)
  1207. Return: AX = status
  1208.         0000h successful
  1209.         0411h all matching names have been returned
  1210.         0412h some groups unavailable, all available matches returned
  1211. Note:    each program using this call should continue until a nonzero status
  1212.       is returned; otherwise, some resources will not be freed for several
  1213.       hours
  1214. SeeAlso: AX=0007h/BX=0007h
  1215.  
  1216. Format of enumerate block:
  1217. Offset    Size    Description
  1218.  00h    WORD    return code
  1219.  02h    WORD    pointer to pattern string
  1220.  04h    WORD    enumerate type
  1221.         0064h organization
  1222.         00C8h group
  1223.         012Ch item
  1224.  06h    WORD    enumerate class
  1225.         0000h unspecified (return all matching items)
  1226.         0001h user names
  1227.         0002h service names
  1228.         0003h list names
  1229.         0004h nicknames
  1230.  08h    WORD    pointer to category criteria block (see below) or 0
  1231.  0Ah    WORD    pointer to array of 64-byte returned names
  1232.  0Ch    WORD    number of names returned
  1233.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1234.           call)
  1235.  
  1236. Format of category criteria block:
  1237. Offset    Size    Description
  1238.  00h    WORD    exclude flag
  1239.         0000h return only items with the specified categories
  1240.         0001h return all items except those with the given categories
  1241.  02h    WORD    number of categories
  1242.  04h    WORD    category 1 value
  1243.  06h    WORD    category 2 value
  1244.         ...
  1245.  
  1246. Values for common service categories:
  1247.  0002h file service
  1248.  0003h print service
  1249.  0004h mail service
  1250.  0005h StreetTalk
  1251.  0006h time service
  1252.  0008h semaphore service
  1253.  0009h 3270/SNA service
  1254.  000Ah asynchronous terminal emulation service
  1255.  000Ch NETBIOS service
  1256.  000Dh PC-based service
  1257. ---------------------------------------------
  1258. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1259.     AX = 0008h
  1260.     BX = 0002h
  1261.     CX = flags
  1262.         bit 0: message will remain on screen until user presses ^X
  1263.         bit 1: ring bell after displaying message
  1264.         bit 2: blink
  1265.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1266. Return: AX = status
  1267.         0000h successful
  1268.         000Bh message display function currently busy
  1269.         000Ch message queue full
  1270. Note:    queues up to three messages to be displayed on the bottom line
  1271. ---------------------------------------------
  1272. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1273.     AX = 0008h
  1274.     BX = 0003h
  1275.     DS:DX -> request block
  1276. Return: AX = status
  1277.         0000h successful
  1278.         0001h network software not installed or incompatible
  1279. Notes:    message handler should not call BIOS or DOS functions, and should
  1280.       either call next handler or simply return
  1281.     to stop intercepting messages, set prev and next request blocks to
  1282.       point at each other
  1283.  
  1284. Format of request block:
  1285. Offset    Size    Description
  1286.  00h    DWORD    pointer to user-written message handler
  1287.  04h    DWORD    pointer to next request block (filled in by VINES)
  1288.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1289.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  1290.  
  1291. Format of message storage area:
  1292. Offset    Size    Description
  1293.  00h 16 BYTEs    IPC port of message sender (see AX=0001h#"Sosock")
  1294.  10h    BYTE    message flags
  1295.  11h    WORD    reserved
  1296.  13h    BYTE    length of message
  1297.  14h 80 BYTEs    message text
  1298. ---------------------------------------------
  1299. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1300.     AX = 000Ah
  1301. Notes:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1302.       which is loaded second.  The first interface loaded will use AX=0002h
  1303. SeeAlso: INT 61/AX=0002h
  1304. ---------------------------------------------
  1305. INT 61 - Banyan VINES - CHECK SERVICE
  1306.     AH = 01h
  1307.     AL = service ID
  1308.         01h communications
  1309.         02h primary 3270 emulation
  1310.         03h async terminal emulation
  1311.         04h file deflectoin
  1312.         07h StreetTalk
  1313.         08h environment
  1314.         0Ah secondary 3270 emulation
  1315.         0Bh semaphore service
  1316.         0Ch 3270 emulation active status
  1317.         0Dh 3270 keyboard interrupt simulator
  1318. Return: AX = status
  1319.         0000h installed
  1320.         0001h not installed
  1321.         0002h invalid ID
  1322. ---------------------------------------------
  1323. INT 61 - Banyan VINES - GET REVISION NUMBER
  1324.     AH = 02h
  1325.     DS:DX -> 2-byte buffer for result
  1326. Return: AX = 0000h installed
  1327.         DS:DX buffer contains revision number as
  1328.         10000d * major_ver + 100d * minor_ver + patch_revision
  1329. ---------------------------------------------
  1330. INT 62 - reserved for user interrupt
  1331. ---------------------------------------------
  1332. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1333. ---------------------------------------------
  1334. INT 63 - reserved for user interrupt
  1335. ---------------------------------------------
  1336. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  1337. ---------------------------------------------
  1338. INT 63 - Oracle SQL Protected Mode Executive - ???
  1339. ---------------------------------------------
  1340. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  1341.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  1342.    has been moved there) and places the old value here
  1343. ---------------------------------------------
  1344. INT 64 - reserved for user interrupt
  1345. ---------------------------------------------
  1346. INT 64 - Adaptec controllers - DRIVE 1 DATA
  1347. ---------------------------------------------
  1348. INT 64 - Oracle SQL Protected Mode Executive - ???
  1349. ---------------------------------------------
  1350. INT 64 - Novell NetWare - LOW-LEVEL API
  1351. Note:    equivalent to INT 7A
  1352. ---------------------------------------------
  1353. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1354. ---------------------------------------------
  1355. INT 64 - Extended Batch Language v3.14+
  1356.     AH = function
  1357.         00h to 5Fh chained to previous handler
  1358.         60h to 6Dh reserved, return immediately
  1359.         80h to FFh chained to previous handler
  1360.         6Eh clear ??? counter/flag
  1361.         6Fh return counter/flag that AH=6Eh clears
  1362.         70h ???
  1363.         AL = ???
  1364.         71h ???
  1365.         AL = ???
  1366.         72h ???
  1367.         73h insert byte at end of keyboard buffer
  1368.         AL = byte to insert
  1369.         74h insert byte at front of keyboard buffer
  1370.         AL = byte to insert
  1371.         75h ???
  1372.         76h get keyboard "stack" status
  1373.         AL = 'K' if kbd read will read physical keyboard
  1374.              'S' if it will read EBL internal keyboard buffer
  1375.         AH = ???
  1376.         77h clear internal keyboard buffer
  1377.         78h ???
  1378.         AL = ???
  1379.         79h ???
  1380.         7Ah ???
  1381.         AL = ???
  1382.         7Bh ???
  1383.         AL = ???
  1384.         7Ch ???
  1385.         AL = ???
  1386.         7Dh ???
  1387.         AL = ???
  1388.         7Eh clear buffer for ???
  1389.         7Fh installation check
  1390.         Return: CX = version in BCD
  1391.             DI = segment of ???
  1392.             BX = segment of next program's PSP???
  1393. Notes:    Extended Batch Language is a batch-file enhancer by Seaware
  1394.     the chaining does not check whether the interrupt had been hooked
  1395.       before, so if you try to chain when the previous vector was 
  1396.       0000h:0000h, you'll be in trouble
  1397. ---------------------------------------------
  1398. INT 65 - reserved for user interrupt
  1399. ---------------------------------------------
  1400. INT 65 - Adaptec controllers - DRIVE 1 DATA
  1401. ---------------------------------------------
  1402. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1403. ---------------------------------------------
  1404. INT 65 - SD.COM v6.2
  1405.    The unregistered version of SD62.COM uses the low byte of this vector to
  1406.    count the number of invocations, displaying a registration reminder each
  1407.    time after the 20th use.
  1408. ---------------------------------------------
  1409. INT 66 - reserved for user interrupt
  1410. ---------------------------------------------
  1411. INT 66 - Adaptec controllers - DRIVE 1 DATA
  1412. ---------------------------------------------
  1413. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  1414. ---------------------------------------------
  1415. INT 66 - THESPLUS - UNINSTALL
  1416.     AX = FFFEh
  1417.     BX = FFFEh
  1418. Return: only if unsuccessful
  1419. Note:    installation check is for the interrupt handler to begin with the bytes
  1420.       FBh, 9Ch, and the string "THESPLUS" to appear at offset 0005h in the
  1421.       interrupt handler segment.
  1422. ---------------------------------------------
  1423. INT 67 - Adaptec controllers - DRIVE 1 DATA
  1424. ---------------------------------------------
  1425. INT 67 - LIM EMS - GET MANAGER STATUS
  1426.     AH = 40h
  1427. Return: AH = status
  1428.         00h successful
  1429.         80h internal error
  1430.         81h hardware malfunction
  1431.         84h undefined function requested by application
  1432. Note:    this call can be used only after establishing that the EMS driver is in
  1433.       fact present
  1434. ---------------------------------------------
  1435. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  1436.     AH = 41h
  1437. Return: AH = 00h function successful
  1438.         BX = segment of page frame
  1439.     AH = error code (see AH=40h)
  1440. ---------------------------------------------
  1441. INT 67 - LIM EMS - GET NUMBER OF PAGES
  1442.     AH = 42h
  1443. Return: AH = 00h function successful
  1444.         BX = number of unallocated pages
  1445.         DX = total number of pages
  1446.     AH = error code (see AH=40h)
  1447. ---------------------------------------------
  1448. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  1449.     AH = 43h
  1450.     BX = number of logical pages to allocate
  1451. Return: AH = status
  1452.         00h function successful
  1453.         DX = handle
  1454.         80h internal error
  1455.         81h hardware malfunction
  1456.         84h undefined function requested
  1457.         85h no more handles available
  1458.         87h more pages requested than physically exist
  1459.         88h more pages requested than currently available
  1460.         89h zero pages requested
  1461. SeeAlso: AH=45h
  1462. ---------------------------------------------
  1463. INT 67 - LIM EMS - MAP MEMORY
  1464.     AH = 44h
  1465.     AL = physical page number (0-3)
  1466.     BX = logical page number
  1467.     DX = handle
  1468. Return: AH = status
  1469.         00h function successful
  1470.         80h internal error
  1471.         81h hardware malfunction
  1472.         83h invalid handle
  1473.         84h undefined function requested
  1474.         8Ah invalid logical page number
  1475.         8Bh illegal physical-page number
  1476. SeeAlso: AH=69h
  1477. ---------------------------------------------
  1478. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  1479.     AH = 45h
  1480.     DX = EMM handle
  1481. Return: AH = status
  1482.         00h successful
  1483.         80h internal error
  1484.         81h hardware malfunction
  1485.         83h invalid handle
  1486.         84h undefined function requested
  1487.         86h error in save or restore of mapping context
  1488. SeeAlso: AH=43h
  1489. ---------------------------------------------
  1490. INT 67 - LIM EMS - GET EMM VERSION
  1491.     AH = 46h
  1492. Return: AH = status
  1493.         00h successful
  1494.         AL = EMM version number
  1495.         80h internal error
  1496.         81h hardware malfunction
  1497.         84h undefined function requested
  1498. ---------------------------------------------
  1499. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  1500.     AH = 47h
  1501.     DX = handle
  1502. Return: AH = status
  1503.         00h successful
  1504.         80h internal error
  1505.         81h hardware malfunction
  1506.         83h invalid handle
  1507.         84h undefined function requested
  1508.         8Ch page-mapping hardware state save area is full
  1509.         8Dh save of mapping context failed
  1510. SeeAlso: AH=47h
  1511. ---------------------------------------------
  1512. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  1513.     AH = 48h
  1514.     DX = handle
  1515. Return: AH = status
  1516.         00h successful
  1517.         80h internal error
  1518.         81h hardware malfunction
  1519.         83h invalid handle
  1520.         84h undefined function requested
  1521.         8Eh restore of mapping context failed
  1522. SeeAlso: AH=47h
  1523. ---------------------------------------------
  1524. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  1525.     AH = 49h
  1526. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  1527. ---------------------------------------------
  1528. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  1529.     AH = 4Ah
  1530. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  1531. ---------------------------------------------
  1532. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  1533.     AH = 4Bh
  1534. Return: AH = status
  1535.         00h successful
  1536.         BX = number of EMM handles
  1537.         80h internal error
  1538.         81h hardware malfunction
  1539.         83h invalid handle
  1540.         84h undefined function requested
  1541. ---------------------------------------------
  1542. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  1543.     AH = 4Ch
  1544.     DX = EMM handle
  1545. Return: AH = status
  1546.         00h successful
  1547.         BX = number of logical pages
  1548.         80h internal error
  1549.         81h hardware malfunction
  1550.         83h invalid handle
  1551.         84h undefined function requested
  1552. SeeAlso: AH=4Dh
  1553. ---------------------------------------------
  1554. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  1555.     AH = 4Dh
  1556.     ES:DI -> array to receive information
  1557. Return: AH = status
  1558.         00h successful
  1559.         BX = number of active EMM handles
  1560.         array filled with 2-word entries, consisting of a handle
  1561.           and the number of pages allocated to that handle
  1562.         80h internal error
  1563.         81h hardware malfunction
  1564.         84h undefined function requested
  1565. SeeAlso: AH=4Ch
  1566. ---------------------------------------------
  1567. INT 67 - LIM EMS - GET OR SET PAGE MAP
  1568.     AH = 4Eh
  1569.     AL = 00h if getting mapping registers
  1570.          01h if setting mapping registers
  1571.          02h if getting and setting mapping registers at once
  1572.          03h if getting size of page-mapping array
  1573.     DS:SI -> array holding information (AL=01/02)
  1574.     ES:DI -> array to receive information (AL=00/02)
  1575. Return: AH = status
  1576.         00h successful
  1577.         AL = bytes in page-mapping array (AL=03h only)
  1578.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  1579.         80h internal error
  1580.         81h hardware malfunction
  1581.         84h undefined function requested
  1582.         8Fh undefined subfunction parameter
  1583.         A3h contents of source array corrupted (EMS 4.0?)
  1584. Note:    this function was designed to be used by multitasking operating systems
  1585.       and should not ordinarily be used by appplication software.
  1586. SeeAlso: AH=4Fh
  1587. ---------------------------------------------
  1588. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  1589.     AH = 4Fh
  1590.     AL = subfunction
  1591.         00h get partial page map
  1592.            DS:SI -> structure containing list of segments whose mapping
  1593.             contexts are to be saved
  1594.            ES:DI -> array to receive page map
  1595.         01h set partial page map
  1596.            DS:SI -> structure containing saved partial page map
  1597.         02h get size of partial page map
  1598.            BX = number of mappable segments in the partial map to be saved
  1599. Return: AH = status
  1600.         00h successful
  1601.         80h internal error
  1602.         81h hardware malfunction
  1603.         84h undefined function requested
  1604.         8Bh one of specified segments is not mappable
  1605.         8Fh undefined subfunction parameter
  1606.         A3h contents of partial page map corrupted or count of mappable
  1607.         segments exceeds total number of mappable segments in system
  1608.     AL = size of partial page map for subfunction 02h
  1609. SeeAlso: AH=4Eh
  1610. ---------------------------------------------
  1611. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  1612.     AH = 50h
  1613.     AL = subfunction
  1614.         00h
  1615.         01h
  1616.     DX = handle
  1617.     CX = number of entries in array
  1618.     DS:SI -> mapping array
  1619. Return: AH = status
  1620.         00h successful
  1621.         80h internal error
  1622.         81h hardware malfunction
  1623.         83h invalid handle
  1624.         84h undefined function requested
  1625.         8Ah one or more logical pages are invalid
  1626.         8Bh one or more physical pages are invalid
  1627.         8Fh invalid subfunction
  1628. SeeAlso: AH=40h
  1629. ---------------------------------------------
  1630. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  1631.     AH = 51h
  1632.     DX = handle
  1633.     BX = number of pages to be allocated to handle
  1634. Return: BX = actual number of pages allocated to handle
  1635.     AH = status
  1636.         00h successful
  1637.         80h internal error
  1638.         81h hardware malfunction
  1639.         83h invalid handle
  1640.         84h undefined function requested
  1641.         87h more pages requested than present in system
  1642.         88h more pages requested than currently available
  1643. ---------------------------------------------
  1644. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  1645.     AH = 52h
  1646.     AL = subfunction
  1647.         00h get handle attributes
  1648.         Return: AL = attribute
  1649.                 00h handle is volatile
  1650.                 01h handle is nonvolatile
  1651.         01h set handle attributes
  1652.         BL = new attribute (see returned AL)
  1653.         02h get attribute capability
  1654.         Return: AL = attribute capability
  1655.                 00h only volatile handles supported
  1656.                 01h both volatile and non-volatile supported
  1657.     DX = handle
  1658. Return:    AH = status
  1659.         00h successful
  1660.         80h internal error
  1661.         81h hardware malfunction
  1662.         83h invalid handle
  1663.         84h undefined function requested
  1664.         8Fh undefined subfunction
  1665.         90h undefined attribute type
  1666.         91h feature not supported
  1667. SeeAlso: AH=53h
  1668. ---------------------------------------------
  1669. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  1670.     AH = 53h
  1671.     AL = subfunction
  1672.         00h get handle name
  1673.            ES:DI -> 8-byte handle name array
  1674.         01h set handle name
  1675.            DS:SI -> 8-byte handle name
  1676.     DX = handle
  1677. Return: AH = status
  1678.         00h successful
  1679.         80h internal error
  1680.         81h hardware malfunction
  1681.         83h invalid handle
  1682.         84h undefined function requested
  1683.         8Fh undefined subfunction
  1684.         A1h duplicate handle name
  1685. SeeAlso: AH=52h
  1686. ---------------------------------------------
  1687. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  1688.     AH = 54h
  1689.     AL = subfunction
  1690.         00h get handle directory
  1691.            ES:DI -> buffer for handle directory
  1692.         01h search for named handle
  1693.            DS:SI -> 8-byte name
  1694.         02h get total number of handles
  1695. Return: AL = number of entries in handle directory (subfunction 00h)
  1696.     DX = value of named handle (subfunction 01h)
  1697.     BX = total number of handles (subfunction 02h)
  1698.     AH = status
  1699.         00h successful
  1700.         80h internal error
  1701.         81h hardware malfunction
  1702.         84h undefined function requested
  1703.         8Fh undefined subfunction
  1704.         A0h no such handle name
  1705.         A1h a handle found had no name
  1706. ---------------------------------------------
  1707. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  1708.     AH = 55h
  1709.     AL = subfunction
  1710.         00h physical page numbers provided by caller
  1711.         01h segment addresses provided by caller
  1712.     DX = handle
  1713.     DS:SI -> structure containing map and jump address
  1714. Return: (at target address unless error)
  1715.     AH = status
  1716.         00h successful
  1717.         80h internal error
  1718.         81h hardware failure
  1719.         83h invalid handle
  1720.         84h undefined function requested
  1721.         8Ah invalid logical page number encountered
  1722.         8Bh invalid physical page number encountered
  1723.         8Fh invalid subfunction
  1724. SeeAlso: AH=56h
  1725. ---------------------------------------------
  1726. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  1727.     AH = 56h
  1728.     AL = subfunction
  1729.         00h physical page numbers provided by caller
  1730.         DX = handle
  1731.         DS:SI -> structure containing page map and call address
  1732.         01h segment addresses provided by caller
  1733.         DX = handle
  1734.         DS:SI -> structure containing page map and call address
  1735.         02h get page map stack space required
  1736.         Return: BX = stack space required
  1737. Return: (if successful, the target address is called.  Use a RETF to return and
  1738.      restore mapping context)
  1739.     AH = status (see AH=55h)
  1740. SeeAlso: AH=55h
  1741. ---------------------------------------------
  1742. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  1743.     AH = 57h
  1744.     AL = subfunction
  1745.         00h move memory region
  1746.         01h exchange memory region
  1747.     DS:SI -> structure describing source and destination
  1748. Return: AH = status
  1749.         00h successful
  1750.         80h internal error
  1751.         81h hardware failure
  1752.         83h invalid handle
  1753.         84h undefined function requested
  1754.         8Ah invalid logical page number encountered
  1755.         8Fh undefined subfunction
  1756.         92h successful, but a portion of the source region has been
  1757.         overwritten
  1758.         93h length of source or destination region exceeds length of region
  1759.         allocated to either source or destination handle
  1760.         94h conventional and expanded memory regions overlap
  1761.         95h offset within logical page exceeds size of logical page
  1762.         96h region length exceeds 1M
  1763.         97h source and destination EMS regions have same handle and overlap
  1764.         98h memory source or destination type undefined
  1765.         A2h attempted to wrap around 1M conventional address space
  1766. ---------------------------------------------
  1767. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  1768.     AH = 58h
  1769.     AL = subfunction
  1770.         00h get mappable physical address array
  1771.         ES:DI -> buffer to be filled with array
  1772.         01h get number of entries in m.p.a. array
  1773. Return: CX = number of entries in array
  1774.     AH = status
  1775.         00h successful
  1776.         80h internal error
  1777.         81h hardware failure
  1778.         84h undefined function requested
  1779.         8Fh undefined subfunction
  1780. ---------------------------------------------
  1781. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  1782.     AH = 59h
  1783.     AL = subfunction
  1784.         00h get hardware configuration array
  1785.         ES:DI -> buffer to be filled with array (see below)
  1786.         01h get unallocated raw page count
  1787.         Return: BX = unallocated raw pages
  1788.             DX = total raw pages
  1789. Return:    AH = status
  1790.         00h successful
  1791.         80h internal error
  1792.         81h hardware failure
  1793.         84h undefined function requested
  1794.         8Fh undefined subfunction
  1795.         A4h access denied by operating system
  1796. Note:    subfunction 00h is for use by operating systems only, and can be
  1797.       enabled or disabled at any time by the operating system
  1798.  
  1799. Format of hardware configuration array:
  1800. Offset    Size    Description
  1801.  00h    WORD    size of raw EMM pages in paragraphs
  1802.  02h    WORD    number of alternate register sets
  1803.  04h    WORD    size of mapping-context save area in bytes
  1804.  06h    WORD    number of register sets assignable to DMA
  1805.  08h    WORD    DMA operation type
  1806.         0000h DMA with alternate register sets
  1807.         0001h only one DMA register set
  1808. ---------------------------------------------
  1809. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  1810.     AH = 5Ah
  1811.     AL = subfunction
  1812.         00h allocate standard pages
  1813.         01h allocate raw pages
  1814.     BX = number of pages to allocate
  1815. Return: DX = handle
  1816.     AH = status
  1817.         00h successful
  1818.         80h internal error
  1819.         81h hardware failure
  1820.         84h undefined function requested
  1821.         85h no more handles available
  1822.         87h insufficient memory pages in system
  1823.         88h insufficient memory pages available
  1824.         8Fh undefined subfunction
  1825. ---------------------------------------------
  1826. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  1827.     AH = 5Bh
  1828.     AL = subfunction
  1829.         00h get alternate map register set
  1830.         Return: BL = current active alternate map register set number
  1831.             ES:DI -> map register context save area if BL=00h
  1832.         01h set alternate map register set
  1833.         BL = new alternate map register set number
  1834.         ES:DI -> map register context save area if BL=0
  1835.         02h get alternate map save array size
  1836.         Return: DX = array size in bytes
  1837.         03h allocate alternate map register set
  1838.         Return: BL = number of map register set; 00h = not supported
  1839.         04h deallocate alternate map register set
  1840.         BL = number of alternate map register set
  1841. Return: AH = status
  1842.         00h successful
  1843.         80h internal error
  1844.         81h hardware malfunction
  1845.         84h undefined function requested
  1846.         8Fh undefined subfunction
  1847.         9Ah specified alternate map register set not supported
  1848.         9Bh all alternate map register sets currently allocated
  1849.         9Ch alternate map register sets not supported
  1850.         9Dh undefined or unallocated alternate map register set
  1851.         A3h source array corrupted
  1852.         A4h operating system denied access
  1853. Note:    this function is for use by operating systems only, and can be
  1854.       enabled or disabled at any time by the operating system
  1855. ---------------------------------------------
  1856. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  1857.     AH = 5Bh
  1858.     AL = subfunction
  1859.         05h allocate DMA register set
  1860.         Return: BL = DMA register set number, 00h if not supported
  1861.         06h enable DMA on alternate map register set
  1862.            BL = DMA register set number
  1863.            DL = DMA channel number
  1864.         07h disable DMA on alternate map register set
  1865.            BL = DMA register set number
  1866.         08h deallocate DMA register set
  1867.            BL = DMA register set number
  1868. Return: AH = status
  1869.         00h successful
  1870.         80h internal error
  1871.         81h hardware malfunction
  1872.         84h undefined function requested
  1873.         8Fh undefined subfunction
  1874.         9Ah specified DMA register set not supported
  1875.         9Bh all DMA register sets currently allocated
  1876.         9Ch alternate DMA sets not supported
  1877.         9Dh undefined or unallocated DMA register set
  1878.         9Eh dedicated DMA channels not supported
  1879.         9Fh specified dedicated DMA channel not supported
  1880.         A3h source array corrupted
  1881.         A4h operating system denied access
  1882. Note:    this function is for use by operating systems only, and can be
  1883.       enabled or disabled at any time by the operating system
  1884. ---------------------------------------------
  1885. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  1886.     AH = 5Ch
  1887. Return: AH = status
  1888.         00h successful
  1889.         80h internal error
  1890.         81h hardware malfunction
  1891.         84h undefined function requested
  1892. ---------------------------------------------
  1893. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  1894.     AH = 5Dh
  1895.     AL = subfunction
  1896.         00h enable OS Function Set
  1897.         01h disable OS Function Set
  1898.         02h return access key (resets memory manager, returns access key at
  1899.         next invocation)
  1900.     BX,CX = access key returned by first invocation
  1901. Return: BX,CX = access key, returned only on first invocation of function
  1902.     AH = status
  1903.         00h successful
  1904.         80h internal error
  1905.         81h hardware malfunction
  1906.         84h undefined function requested
  1907.         8Fh undefined subfunction
  1908.         A4h operating system denied access
  1909. ---------------------------------------------
  1910. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  1911.     AH = 60h
  1912.     ES:DI -> buffer
  1913. Return: AH = status
  1914.     AL = number of entries
  1915.     buffer at ES:DI filled
  1916. ---------------------------------------------
  1917. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  1918.     AH = 61h
  1919.     ???
  1920. Return: ???
  1921. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  1922.       ensuring that the cache accurately reflects what the processor would
  1923.       see without the cache.
  1924. ---------------------------------------------
  1925. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  1926.     AH = 68h
  1927.     ES:DI -> buffer
  1928. Return: AH = status
  1929.     AL = number of entries
  1930.     buffer at ES:DI filled
  1931. Note:    equivalent to LIM 4.0 function 58h
  1932. ---------------------------------------------
  1933. INT 67 - EEMS - MAP PAGE INTO FRAME
  1934.     AH = 69h
  1935.     AL = frame number
  1936.     BX = page number
  1937.     DX = handle
  1938. Return: AH = status
  1939. Note:    similar to EMS function 44h
  1940. SeeAlso: AH=44h,50h,6Ah
  1941. ---------------------------------------------
  1942. INT 67 - EEMS - PAGE MAPPING
  1943.     AH = 6Ah
  1944.     AL = subfunction
  1945.         00h save partial page map
  1946.         CH = first page frame
  1947.         CL = number of frames
  1948.         ES:DI -> buffer which is to be filled
  1949.         01h restore partial page map
  1950.         CH = first page frame
  1951.         CL = number of frames
  1952.         DI:SI -> previously saved page map
  1953.         02h save and restore partial page map
  1954.         CH = first page frame
  1955.         CL = number of frames
  1956.         ES:DI = buffer for current page map
  1957.         DI:SI = new page map
  1958.         03h get size of save array
  1959.         CH = first page frame
  1960.         CL = number of frames
  1961.         Return: AL = size of array in bytes
  1962.         04h switch to standard map register setting
  1963.         05h switch to alternate map register setting
  1964.         06h deallocate pages mapped to frames in conventional memory
  1965.         CH = first page frame
  1966.         CL = number of frames
  1967. Return: AH = status
  1968. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  1969.       specified
  1970. SeeAlso: AH=69h
  1971. ---------------------------------------------
  1972. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  1973.     AX = DE00h
  1974. Return: AH = 00h    VCPI is present
  1975.         BH = major version number
  1976.         BL = minor version number
  1977.     AH nonzero  VCPI not present
  1978. ---------------------------------------------
  1979. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  1980.     AX = DE01h
  1981.     ES:DI -> 4K page table buffer
  1982.     DS:SI -> three descriptor table entries in GDT
  1983.         first becomes code segment descriptor, other two for use by
  1984.         main control program
  1985. Return: AH = 00h successful
  1986.         DI -> first unused page table entry in buffer
  1987.         EBX -> protected mode entry point in code segment
  1988.     AH = nonzero  failed
  1989. ---------------------------------------------
  1990. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  1991.     AX = DE02h
  1992. Return: AH = 00h  successful
  1993.         EDX = physical address of highest 4K memory page
  1994.     AH nonzero: failed
  1995. ---------------------------------------------
  1996. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  1997.     AX = DE03h
  1998. Return: AH = 00h  successful
  1999.         EDX = number of free 4K pages
  2000.     AH nonzero: failed
  2001. Notes:    returns total number of pages available to ALL tasks in system
  2002.     also available in protected mode by calling the protected-mode VCPI
  2003.       entry point
  2004. SeeAlso: AX=DE04h
  2005. ---------------------------------------------
  2006. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  2007.     AX = DE04h
  2008. Return: AH = 00h successful
  2009.         EDX = physical address of allocated page
  2010.     AH nonzero: failed
  2011. Notes:    the client program is responsible for freeing all memory allocated
  2012.       with this call before terminating
  2013.     also available in protected mode by calling the protected-mode VCPI
  2014.       entry point
  2015. SeeAlso: AX=DE03h,DE05h
  2016. ---------------------------------------------
  2017. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  2018.     AX = DE05h
  2019.     EDX = physical address of 4K page
  2020. Return: AH = 00h successful
  2021.     AH nonzero: failed
  2022. Note:    also available in protected mode by calling the protected-mode VCPI
  2023.       entry point
  2024. SeeAlso: AX=DE04h
  2025. ---------------------------------------------
  2026. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  2027.     AX = DE06h
  2028.     CX = page number (linear address shifted right 12 bits)
  2029. Return: AH = 00h successful
  2030.         EDX = physical address of page
  2031.     AH nonzero: invalid page number (AH = 8Bh recommended)
  2032. ---------------------------------------------
  2033. INT 67 - Virtual Control Program Interface - READ CR0
  2034.     AX = DE07h
  2035. Return: AH = 00h
  2036.     EBX = value of Control Register 0
  2037. SeeAlso: AX=DE07h
  2038. ---------------------------------------------
  2039. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  2040.     AX = DE08h
  2041.     ES:DI -> array of 8 DWORDs
  2042. Return: AH = 00h
  2043.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  2044. SeeAlso: AX=DE09h
  2045. ---------------------------------------------
  2046. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  2047.     AX = DE09h
  2048.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  2049. Return: AH = 00h
  2050. Note:    values for DR4 and DR5 ignored
  2051. SeeAlso: AX=DE08h
  2052. ---------------------------------------------
  2053. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  2054.     AX = DE0Ah
  2055. Return: AH = 00h successful
  2056.         BX = first vector used by master 8259 (IRQ0)
  2057.         CX = first vector used by slave 8259 (IRQ8)
  2058.     AH nonzero: failed
  2059. Note:    CX is undefined in systems without a slave 8259
  2060. SeeAlso: AX=DE0Bh
  2061. ---------------------------------------------
  2062. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  2063.     AX = DE0Bh
  2064.     BX = first vector used by master 8259
  2065.     CX = first vector used by slave 8259
  2066.     interrupts disabled
  2067. Return: AH = 00h successful
  2068.     AH nonzero: failed 
  2069. Notes:    This call merely informs the server that the client has changed the
  2070.       interrupt mappings.  The client may not change the mappings if they
  2071.       have already been changed by the server or another client, and is
  2072.       responsible for restoring the original mappings before terminating.
  2073. SeeAlso: AX=DE0Ah
  2074. ---------------------------------------------
  2075. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  2076.     AX = DE0Ch
  2077.     ESI = linear address in first megabyte of values for system registers
  2078.     interrupts disabled
  2079. Return: interrupts disabled
  2080.     GDTR, IDTR, LDTR, TR loaded
  2081.     SS:ESP must have at least 16 bytes space, and the entry point is
  2082.         required to set up a new stack before enabling interrupts
  2083.     EAX, ESI, DS, ES, FS, GS destroyed
  2084. SeeAlso: INT 15/AH=89h
  2085.  
  2086. Note:    in protected mode, calling the protected-mode VCPI entry point with 
  2087.       AX = DE0Ch
  2088.       DS = segment selector from function DE01h
  2089.       SS:ESP in first megabyte of linear memory
  2090.       STACK:QWORD  return address from FAR call to 32-bit segment
  2091.         DWORD  EIP
  2092.         DWORD  CS
  2093.         DWORD  reserved for EFLAGS
  2094.         DWORD  ESP
  2095.         DWORD  SS
  2096.         DWORD  ES
  2097.         DWORD  DS
  2098.         DWORD  FS
  2099.         DWORD  GS
  2100.       and interrupts disabled, will switch to virtual86 mode with
  2101.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  2102.  
  2103. Format of system register values for switch to protected mode:
  2104. Offset    Size    Description
  2105.  00h    DWORD    value for CR3
  2106.  04h    DWORD    linear address in first megabyte of value for GDTR
  2107.  08h    DWORD    linear address in first megabyte of value for IDTR
  2108.  0Ch    WORD    value for LDTR
  2109.  0Eh    WORD    value for TR
  2110.  10h    PWORD    CS:EIP of protected mode entry-point
  2111. ---------------------------------------------
  2112. INT 68 - APPC/PC
  2113.     AH = 01h
  2114.     DS:DX -> control block
  2115.  
  2116. Format of control block:
  2117. Offset    Size    Description
  2118.  00h 12 BYTEs    reserved
  2119.  0Ch    WORD    verb (action)
  2120.  0Eh  6 BYTEs    00h
  2121.  14h    DWORD    (high byte first) return code (see below)
  2122. ---if verb = 1B00h (DISPLAY)---
  2123.  18h    WORD    00h
  2124.  1Ah  8 BYTEs    (high byte first) logical unit ID
  2125.  22h  8 BYTEs    (high byte first) partner logical unit name
  2126.  2Ah  8 BYTEs    (high byte first) mode name
  2127.  32h    BYTE    logical unit session limit
  2128.  33h    BYTE    partner logical unit session limit
  2129.  34h    BYTE    mode maximum negotiable session limit
  2130.  35h    BYTE    current session limit
  2131.  36h    BYTE    minimum negotiated winner limit
  2132.  37h    BYTE    maximum negotiated loser limit
  2133.  38h    BYTE    active session count
  2134.  39h    BYTE    active CONWINNER session count
  2135.  3Ah    BYTE    active CONLOSER session count
  2136.  3Bh    BYTE    session termination count
  2137.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  2138.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  2139. ---if verb=2000h (Attach Physical Unit)---
  2140.  18h    WORD    00h
  2141.  1Ah    BYTE    version
  2142.  1Bh    BYTE    release
  2143.  1Ch  8 BYTEs    (high byte first) net name
  2144.  24h  8 BYTEs    (high byte first) physical unit name
  2145.  2Ch  8 BYTEs    00h
  2146.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2147.  38h    DWORD    00h
  2148.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  2149.         01h RETURN_CONTROL: INCOMPLETE
  2150. ---if verb=2100h (Attach Logical Unit)---
  2151.  18h    WORD    70  offset to partner logical unit record
  2152.  1Ah  8 BYTEs    (high byte first) logical unit name
  2153.  22h  8 BYTEs    (high byte first) logical unit ID
  2154.  2Ah    BYTE    logical unit local address
  2155.  2Bh    BYTE    logical unit session limit
  2156.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  2157.         FFFFFFFFh = reject incoming ALLOCATEs
  2158.         00000000h = queue ALLOCATEs
  2159.  30h    DWORD    00h
  2160.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  2161.  38h    DWORD    00h
  2162.  3Ch    BYTE    maximum TPs
  2163.  3Dh    BYTE    queue depth
  2164.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  2165.  42h    DWORD    00h
  2166.  46h    WORD    total length of partner records
  2167.     for each partner logical unit:
  2168.     WORD    length of this partner logical unit record
  2169.     WORD    42  offset to mode records
  2170.       8 BYTEs    (high byte first) partner logical unit name
  2171.     BYTE    partner logical unit security capabilities
  2172.         bit 7: already verified
  2173.         bit 6: conversation level security
  2174.         bit 5: session level security
  2175.     BYTE    partner logical unit session limit
  2176.     WORD    partner logical unit maximum MC_SEND_LL
  2177.       8 BYTEs    (high byte first) partner logical unit DLC name
  2178.     BYTE    partner logical unit adapter number
  2179.      17 BYTEs    (counted string) partner logical unit adapter address
  2180.     WORD    total length of mode records
  2181.    for each mode:
  2182.     WORD    16  length of this mode record
  2183.       8 BYTEs    (high byte first) mode name
  2184.     WORD    RU_SIZE high bound
  2185.     WORD    RU_SIZE low bound
  2186.     BYTE    mode maximum negotiable session limit
  2187.     BYTE    pacing size for receive
  2188. ---if verb=2200h (Detach Logical Unit)---
  2189.  18h  8 BYTEs    (high byte first) logical unit ID
  2190.  20h    BYTE    00h
  2191. ---if verb=2700h (Detach Physical Unit)---
  2192.  18h    BYTE    00h  type: hard
  2193.         01h  type: soft
  2194. ---if verb=2B00h (Activate DLC)---
  2195.  18h  8 BYTEs    (high byte first) DLC name
  2196.  20h    BYTE    adapter number
  2197.  
  2198. Values for return code:
  2199.      0000h    successful
  2200.      0001h    BAD_TP_ID
  2201.      0002h    BAD_CONV_ID
  2202.      0003h    bad logical unit ID
  2203.      0008h    no physical unit attached
  2204.      0110h    bad state
  2205.      01B1h    BAD_PART_LUNAME
  2206.      01B2h    bad mode name
  2207.      0201h    physical unit already active
  2208.      0211h    logical unit already active
  2209.      0212h    BAD_PART_SESS
  2210.      0213h    BAD_RU_SIZES
  2211.      0214h    BAD_MODE_SESS
  2212.      0216h    BAD_PACING_CNT
  2213.      0219h    EXTREME_RUS
  2214.      021Ah    SNASVCMG_1
  2215.      0223h    SSCP_CONNECTED_LU
  2216.      0230h    invalid change
  2217.      0243h    too many TPs
  2218.      0272h    adapter close failure
  2219.      0281h    GET_ALLOC_BAD_TYPE
  2220.      0282h    unsuccessful
  2221.      0283h    DLC failure
  2222.      0284h    unrecognized DLC
  2223.      0286h    duplicate DLC
  2224.      0301h    SSCP_PU_SESSION_NOT_ACTIVE
  2225.      0302h    data exceeds RU size
  2226.      0401h    invalid direction
  2227.      0402h    invalid type
  2228.      0403h    segment overlap
  2229.      0404h    invalid first character
  2230.      0405h    table error
  2231.      0406h    conversion error
  2232.      F0010000h    APPC disabled
  2233.      F0020000h    APPC busy
  2234.      F0030000h    APPC abended
  2235.      F0040000h    incomplete
  2236.  
  2237. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  2238. pointers are called by pushing the DWORD pointer to the verb on the stack and
  2239. then performing a FAR call.
  2240.  
  2241. Format of ACCESS_LU_LU_PW verb:
  2242. Offset    Size    Description
  2243.  00h 12 BYTEs    reserved
  2244.  0Ch    WORD    1900h
  2245.  0Eh  8 BYTEs    (high byte first) logical unit ID
  2246.  16h  8 BYTEs    (high byte first) logical unit name
  2247.  1Eh  8 BYTEs    (high byte first) partner logical unit name
  2248.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  2249.  37h    BYTE    password available (0=no, 1=yes)
  2250.  38h  8 BYTEs    password
  2251.  
  2252. Format of CREATE_TP verb:
  2253. Offset    Size    Description
  2254.  00h 12 BYTEs    reserved
  2255.  0Ch    WORD    2300h
  2256.  0Eh  6 BYTEs    00h
  2257.  14h    DWORD    (high byte first) sense code
  2258.         00000000h    Ok
  2259.         080F6051h    SECURITY_NOT_VALID
  2260.         084B6031h    TP_NOT_AVAIL_RETRY
  2261.         084C0000h    TP_NOT_AVAIL_NO_RETRY
  2262.         10086021h    TP_NAME_NOT_RECOGNIZED
  2263.         10086034h    CONVERSATION_TYPE_MISMATCH
  2264.         10086041h    SYNC_LEVEL_NOT_SUPPORTED
  2265.  18h  8 BYTEs    (high byte first) TP ID
  2266.  20h  8 BYTEs    (high byte first) logical unit ID
  2267.  28h    DWORD    (high byte first) conversation ID
  2268.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  2269.  2Dh    BYTE    0 no sync level, 1 confirm
  2270.  2Eh    BYTE    reserved
  2271.  2Fh 65 BYTEs    (counted string) transaction program name
  2272.  70h  6 BYTEs    00h
  2273.  76h    WORD    length of ERROR_LOG_DATA to return
  2274.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  2275.  7Ch  8 BYTEs    (high byte first) partner logical unit name
  2276.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  2277.  96h  8 BYTEs    (high byte first) mode name
  2278.  9Eh 12 BYTEs    00h
  2279.  AAh 11 BYTEs    (counted string) password
  2280.  B5h 11 BYTEs    (counted string) user ID
  2281.  C0h    BYTE    0 verification should be performed
  2282.         1 already verified
  2283.  
  2284. Format of SYSLOG verb:
  2285. Offset    Size    Description
  2286.  00h 12 BYTEs    reserved
  2287.  0Ch    WORD    2600h
  2288.  0Eh 10 BYTEs    00h
  2289.  18h    WORD    (high byte first) type
  2290.  1Ah    DWORD    (high byte first) subtype
  2291.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  2292.  22h    DWORD    (high byte first) conversation ID
  2293.  26h  8 BYTEs    (high byte first) TP ID
  2294.  2Eh  8 BYTEs    (high byte first) physical unit or logical unit name
  2295.  36h    WORD    length of data
  2296.  38h    DWORD    pointer to data
  2297.  3Ch    BYTE    00h
  2298. ---------------------------------------------
  2299. INT 68 - APPC/PC
  2300.     AH = 02h
  2301.     DS:DX -> control block
  2302.  
  2303. Format of control block:
  2304. Offset    Size    Description
  2305.  00h 12 BYTEs    reserved
  2306.  0Ch    WORD    verb (action)
  2307.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  2308.         0 if basic verb
  2309.  0Fh  5 BYTEs    reserved (0)
  2310.  14h    WORD    (high byte first) primary return code (see below)
  2311.  16h    DWORD    (high byte first) error code (see below)
  2312.  1Ah  8 BYTEs    (high byte first) TP_ID
  2313.  22h    DWORD    (high byte first) conversation ID
  2314. ---if verb=0100h (Allocate or MC_Allocate)---
  2315.  26h    BYTE    (MC_Allocate only) 0 basic conversation
  2316.                      1 mapped conversation
  2317.  27h    BYTE    00h SYNC_LEVEL = none
  2318.         01h SYNC_LEVEL = confirm
  2319.  28h    WORD    0000h
  2320.  2Ah    BYTE    00h RETURN_CONTROL: when session allocated
  2321.         01h RETURN_CONTROL: immediate
  2322.         02h RETURN_CONTROL: when session free
  2323.  2Bh  8 BYTEs    00h
  2324.  33h  8 BYTEs    (high byte first) partner logical unit name
  2325.  3Bh  8 BYTEs    (high byte first) mode name
  2326.  43h 65 BYTEs    (counted string) TP name
  2327.  84h    BYTE    00h security: none
  2328.         01h security: same
  2329.         02h security: pgm
  2330.  85h 11 BYTEs    00h
  2331.  90h 11 BYTEs    (counted string) password
  2332.  9Bh 11 BYTEs    (counted string) user ID
  2333.  A6h    WORD    PIP_DATA length
  2334.  A8h    DWORD    pointer to PIP_DATA
  2335. ---if verb=0300h (Confirm or MC_Confirm)---
  2336.  26h    BYTE  request to send received (0=no, 1=yes)
  2337. ---if verb=0400h (Confirmed or MC_Confirmed), no additional fields---
  2338. ---if verb=0500h (Deallocate or MC_Deallocate)---
  2339.  26h    BYTE    00h
  2340.  27h    BYTE    type 0 SYNC_LEVEL
  2341.              1 FLUSH
  2342.              2 ABEND_PROC
  2343.              3 ABEND_SVC
  2344.              4 ABEND_TIMER
  2345.              5 ABEND
  2346.  28h    WORD    (MC_Deallocate only) length of error log data
  2347.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  2348. ---if verb=0600h (Flush or MC_Flush), no additional fields---
  2349. ---if verb=0700h (Get_Attributes or MC_Get_Attributes)---
  2350.  26h  8 BYTEs    (high byte first) logical unit ID
  2351.  2Eh    BYTE    00h
  2352.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  2353.  30h  8 BYTEs    (high byte first) mode name
  2354.  38h  8 BYTEs    (high byte first) own net name
  2355.  40h  8 BYTEs    (high byte first) own logical unit name
  2356.  48h  8 BYTEs    (high byte first) partner logical unit name
  2357.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  2358.  62h    BYTE    00h
  2359.  63h 11 BYTEs    (counted string) user ID
  2360. ---if verb=0800h (Get_Type)---
  2361.  26h    BYTE    type (0=basic conversation, 1=mapped conversation)
  2362. ---if verb=0900h (Post_on_Receipt)---
  2363.  26h    WORD    maximum length
  2364.  28h    BYTE    fill (0=buffer, 1=LL)
  2365. ---if verb=0A00h (Prepare_to_Receive or MC_Prepare_to_Receive)---
  2366.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  2367.  27h    BYTE    locks (0=short, 1=long)
  2368. ---if verb=0B00h (Receive_and_Wait or MC_Receive_and_Wait)---
  2369.  26h    BYTE    what received
  2370.         00h data
  2371.         01h data complete
  2372.         02h data incomplete
  2373.         03h confirm
  2374.         04h confirm send
  2375.         05h confirm deallocate
  2376.         06h send
  2377.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  2378.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  2379.  29h    WORD    maximum length
  2380.  2Bh    WORD    data length
  2381.  2Dh    DWORD    pointer to data
  2382. ---if verb=0C00h (Receive_Immediate or MC_Receive_Immediate)---
  2383.  26h    BYTE    what received
  2384.         00h data
  2385.         01h data complete
  2386.         02h data incomplete
  2387.         03h confirm
  2388.         04h confirm send
  2389.         05h confirm deallocate
  2390.         06h send
  2391.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  2392.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  2393.  29h    WORD    maximum length
  2394.  2Bh    WORD    data length
  2395.  2Dh    DWORD    pointer to data
  2396. ---if verb=0E00h (Request_to_Send or MC_Request_to_Send), no other fields---
  2397. ---if verb=0F00h (Send_Data or MC_Send_Data)---
  2398.  26h    BYTE    request to send received (0=no, 1=yes)
  2399.  27h    BYTE    00h
  2400.  28h    WORD    data length
  2401.  2Ah    DWORD    pointer to data
  2402. ---if verb=1000h (Send_Error or MC_Send_Error)---
  2403.  26h    BYTE    request to send received (0=no, 1=yes)
  2404.  27h    BYTE    type (0=program, 1=SVC)
  2405.  28h    DWORD    00h
  2406.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  2407.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  2408. ---if verb=1200h (Test or MC_Test)---
  2409.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  2410.         Note: error code has different interpretations for:
  2411.             0 posted data
  2412.             1 posted not data (primary return code = 0)
  2413.             1 bad TP_ID (primary return code = 1)
  2414. ---if verb=1300h (Wait)---
  2415.  26h    BYTE    number of conversations to wait on
  2416.         Note: error codes have interpretations as for 1200h above
  2417.  
  2418. Values for primary return code:
  2419.  0000h    successful
  2420.  0001h    parameter check
  2421.  0002h    state check
  2422.  0003h    allocation error
  2423.  0005h    deallocate abended
  2424.  0006h    deallocate abended program
  2425.  0007h    deallocate abended SVC
  2426.  0008h    deallocate abended timer
  2427.  0009h    deallocate normal return
  2428.  000Ah    data posting blocked
  2429.  000Bh    posting not active
  2430.  000Ch    PROG_ERROR_NO_TRUNC
  2431.  000Dh    PROG_ERROR_TRUNC
  2432.  000Eh    PROG_ERROR_PURGING
  2433.  000Fh    CONV_FAILURE_RETRY
  2434.  0010h    CONV_FAILURE_NO_RETRY
  2435.  0011h    SVC_ERROR_NO_TRUNC
  2436.  0012h    SVC_ERROR_TRUNC
  2437.  0013h    SVC_ERROR_PURGING
  2438.  0014h    unsuccessful
  2439.  0018h    CNOS partner logical unit reject
  2440.  0019h    conversation type mixed
  2441.  F001h    APPC disabled
  2442.  F002h    APPC busy
  2443.  F003h    APPC abended
  2444.  F004h    incomplete
  2445.  
  2446. Values for error code:
  2447.  0001h bad TP ID
  2448.  0002h bad conversation ID
  2449.  0004h allocation error, no retry
  2450.  0005h allocation error, retry
  2451.  0006h data area crosses segment boundary
  2452.  0010h bad TPN length
  2453.  0011h bad CONV length
  2454.  0012h bad SYNC level
  2455.  0013h bad security selection
  2456.  0014h bad return control
  2457.  0015h SEC_TOKENS too big
  2458.  0016h PIP_LEN incorrect
  2459.  0017h no use of SNASVCMG
  2460.  0018h unknown partner mode
  2461.  0031h confirm: SYNC_NONE
  2462.  0032h confirm: bad state
  2463.  0033h confirm: NOT_LL_BDY
  2464.  0041h confirmed: bad state
  2465.  0051h deallocate: bad type
  2466.  0052h deallocate: flush bad state
  2467.  0053h deallocate: confirm bad state
  2468.  0055h deallocate: NOT_LL_BDY
  2469.  0057h deallocate: log LL_WRONG
  2470.  0061h flush: not send state
  2471.  0091h post on receipt: invalid length
  2472.  0092h post on receipt: not in receive state
  2473.  0093h post on receipt: bad fill
  2474.  00A1h prepare to receive:invalid type
  2475.  00A2h prepare to receive: unfinished LL
  2476.  00A3h prepare to receive: not in send state
  2477.  00B1h receive and wait: bad state
  2478.  00B2h receive and wait: NOT_LL_BDY
  2479.  00B5h receive and wait: bad fill
  2480.  00C1h receive immediate: not in receive state
  2481.  00C4h receive immediate: bad fill
  2482.  00E1h request to send: not in receive state
  2483.  00F1h send data: bad LL
  2484.  00F2h send data: not in send state
  2485.  0102h send error: log LL wrong
  2486.  0103h send error: bad type
  2487.  0121h test: invalid type
  2488.  0122h test: not in receive state
  2489. ---------------------------------------------
  2490. INT 68 - APPC/PC
  2491.     AH = 03h
  2492.     DS:DX -> control block (see below)
  2493.  
  2494. Format of control block:
  2495. Offset    Size    Description
  2496.  00h 12 BYTEs    reserved
  2497.  0Ch    WORD    verb (action)
  2498.  0Eh  6 BYTEs    0
  2499.  14h    DWORD    (high byte first) return code (see AH=01h)
  2500.  18h    WORD    0
  2501.  1Ah  8 BYTEs    (high byte first) logical unit ID
  2502. ---if verb=2400h (TP Started), control block continues---
  2503.  22h  8 BYTEs    (high byte first) TP ID
  2504. ---if verb=2800h (Get ALLOCATE), control block continues---
  2505.  22h    BYTE    type
  2506.         00h dequeue
  2507.         01h test
  2508.  23h    DWORD    pointer to CREATE_TP record
  2509. ---if verb=2A00h (Change Logical Unit). control block continues---
  2510.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  2511.         FFFFFFFFh reject incoming ALLOCATEs
  2512.         00000000h queue ALLOCATEs
  2513.  26h    DWORD    00000000h
  2514.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  2515.  2Eh    DWORD    00000000h
  2516.  32h    BYTE    maximum TPs
  2517.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  2518.         01h resume QUEUE_ALLOCATEs
  2519.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  2520.  38h    DWORD    00000000h
  2521. ---------------------------------------------
  2522. INT 68 - APPC/PC
  2523.     AH = 04h
  2524.     DS:DX -> control block (see below)
  2525.  
  2526. Format of control block:
  2527. Offset    Size    Description
  2528.  00h 12 BYTEs    reserved
  2529.  0Ch    WORD    verb (action)
  2530.         2500h TP_ENDED
  2531.         2900h TP_VALID
  2532.  0Eh  6 BYTEs    0
  2533.  14h    DWORD    (high byte first) return code (see AH=01h)
  2534.  18h    WORD    0
  2535.  1Ah  8 BYTEs    (high byte first) TP_ID
  2536.  22h    DWORD -> CREATE_TP record (only if verb = 2900h)
  2537. ---------------------------------------------
  2538. INT 68 - APPC/PC - TRANSFER MSG DATA
  2539.     AH = 05h
  2540.     DS:DX -> control block (see below)
  2541.  
  2542. Format of control block:
  2543. Offset    Size    Description
  2544.  00h 12 BYTEs    reserved
  2545.  0Ch    WORD    1C00h
  2546.  0Eh    BYTE    00h user defined
  2547.         01h NMVT
  2548.         02h alert subvectors
  2549.         03h PDSTATS subvectors
  2550.  0Fh  5 BYTEs    0
  2551.  14h    DWORD    (high byte first) return code (see AH=01h)
  2552.  18h 12 BYTEs    0
  2553.  24h    BYTE    if bit 0 clear, add correlation subvector
  2554.         if bit 1 clear, add product set ID subvector
  2555.         if bit 2 clear, do SYSLOG
  2556.         if bit 3 clear, send SSCP_PU_SESSION
  2557.  25h    BYTE    0
  2558.  26h    WORD    length of data
  2559.  28h  N BYTEs    data
  2560. ---------------------------------------------
  2561. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  2562.     AH = 06h
  2563.     DS:DX -> control block (see below)
  2564.  
  2565. Format of control block:
  2566. Offset    Size    Description
  2567.  00h 12 BYTEs    reserved
  2568.  0Ch    WORD    1500h
  2569.  0Eh  6 BYTEs    0
  2570.  14h    WORD    (high byte first) primary return code (see AH=02h)
  2571.  16h    DWORD    (high byte first) secondary return code (see below, AH=01h)
  2572.  1Ah  8 BYTEs    (high byte first) logical unit ID
  2573.  22h  8 BYTEs    blanks
  2574.  2Ah  8 BYTEs    (high byte first) partner logical unit name
  2575.  32h  8 BYTEs    (high byte first) mode name
  2576.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  2577.         bit 6: set negotiable values
  2578.  3Bh    BYTE    partner logical unit mode session limit
  2579.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  2580.  3Dh    BYTE    maximum CONWINNERS_TARGET
  2581.  3Eh    BYTE    automatic activation
  2582.  3Fh    BYTE    0
  2583.  40h    BYTE    bit 7: drain target
  2584.         bit 6: drain source
  2585.         bit 5: target responsible, not source
  2586.  
  2587. Values for secondary return code (see also AH=01h):
  2588.   0000h accepted
  2589.   0001h negotiated
  2590.   0003h bad logical unit ID
  2591.   0004h allocation failure, no retry
  2592.   0005h allocation failure, retry
  2593.   0151h can't raise limits
  2594.   0153h all modes must reset
  2595.   0154h bad SNASVCMG limits
  2596.   0155h minimum greater than total
  2597.   0156h mode closed (prim return code = 1)
  2598.     CNOS mode closed (prim return code = 18h)
  2599.   0157h bad mode name (prim return code = 1)
  2600.     CNOS bad mode name (prim return code = 18h)
  2601.   0159h reset SNA drains
  2602.   015Ah single not SRC response
  2603.   015Bh bad partner logical unit
  2604.   015Ch exceeds maximum allowed
  2605.   015Dh change SRC drains
  2606.   015Eh logical unit detached
  2607.   015Fh CNOS command race reject
  2608. ---------------------------------------------
  2609. INT 68 - APPC/PC - PASSTHROUGH
  2610.     AH = 07h
  2611.     DS:DX -> control block (format depends on application subsystem)
  2612. ---------------------------------------------
  2613. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  2614.     AH = FAh
  2615.     AL bit 0 = 0 enable
  2616.            1 disable
  2617. ---------------------------------------------
  2618. INT 68 - APPC/PC - CONVERT
  2619.     AH = FBh
  2620.     DS:DX -> control block (see below)
  2621.  
  2622. Format of control block:
  2623. Offset    Size    Description
  2624.  00h 12 BYTEs    reserved
  2625.  0Ch    WORD    1A00h
  2626.  0Eh  6 BYTEs    0
  2627.  14h    DWORD    (high byte first) return code
  2628.  18h    BYTE    conversion
  2629.            00h ASCII to EBCDIC
  2630.            01h EBCDIC to ASCII
  2631.  19h    BYTE    character set
  2632.            00h AE
  2633.            01h A
  2634.            02h G
  2635.  1Ah    WORD    length of string to convert
  2636.  1Ch    DWORD    pointer to source
  2637.  20h    DWORD    pointer to target
  2638. ---------------------------------------------
  2639. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  2640.     AH = FCh
  2641.     AL = 00h disable tracing
  2642.        = 01h enable tracing
  2643.         DX = number of bytes to keep (0=all)
  2644. SeeAlso: AH=FDh
  2645. ---------------------------------------------
  2646. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  2647.     AH = FDh
  2648.     AL = 00h disable tracing
  2649.          01h enable tracing
  2650. SeeAlso: AH=FCh,FEh
  2651. ---------------------------------------------
  2652. INT 68 - APPC/PC - SET TRACE DESTINATION
  2653.     AH = FEh
  2654.     AL = trace destinations
  2655.         bit 0  storage (DS:DX -> trace stats record)
  2656.         bit 1  display
  2657.         bit 2  file (trace written to file OUTPUT.PC)
  2658.         bit 3  printer
  2659. SeeAlso: AH=FDh
  2660.  
  2661. Format of Trace Statistics Record:
  2662. Offset    Size    Description
  2663.  00h    DWORD    pointer to storage trace buffer
  2664.  04h    WORD    max number of 80-byte records in trace
  2665.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  2666.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  2667.  0Ch    DWORD    reserved
  2668. Note:    do not move record while trace is active
  2669. ---------------------------------------------
  2670. INT 68 - APPC/PC - SET PASSTHROUGH
  2671.     AH = FFh
  2672.     DS:DX -> passthrough exit routine
  2673. ---------------------------------------------
  2674. INT 69 - Zenith AT BIOS - ???
  2675.    called by INT 09 handler
  2676. ---------------------------------------------
  2677. INT 69 - DECnet DOS - DATA LINK LAYER PROGRAM
  2678. ---------------------------------------------
  2679. INT 6A - OPTHELP.COM
  2680. Notes:    OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  2681.       assembler
  2682.     may be configured to use any interrupt from 60h to 7Fh (default 6Ah)
  2683. ---------------------------------------------
  2684. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  2685. ---------------------------------------------
  2686. INT 6B - Ungermann-Bass NETCI
  2687.     ???
  2688. ---------------------------------------------
  2689. INT 6C - system resume vector (CONVERTIBLE)
  2690. ---------------------------------------------
  2691. INT 6C - DOS 3.2 Realtime Clock update
  2692. ---------------------------------------------
  2693. INT 6D - VGA - internal
  2694. Note:    used by IBM, Paradise, Video7, and NCR
  2695. ---------------------------------------------
  2696. INT 6D - ATI VGA Wonder - VIDEO BIOS ENTRY POINT
  2697.    points at the original INT 10 entry point set up by the ATI BIOS
  2698. ---------------------------------------------
  2699. INT 6D - DECnet DOS - DATA LINK LAYER PROGRAM
  2700. ---------------------------------------------
  2701. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  2702. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  2703.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  2704.     there is a signature/data area immediately prior to the interrupt
  2705.       handler which may be used as an installation check
  2706.  
  2707. Format of signature area:
  2708. Offset    Size    Description
  2709.  -5    BYTE    major version number
  2710.  -4    BYTE    minor version number
  2711.  -3   3 BYTEs    signature (ASCII "DNP")
  2712. ---------------------------------------------
  2713. INT 6F - HP ES-12 EXTENDED BIOS - READ CMOS MEMORY
  2714.     BP = 0012h
  2715.     AH = 22h
  2716.     BL = address of CMOS byte to read
  2717. Return: AH = status
  2718.     AL = byte read
  2719.     BP, DS destroyed
  2720. SeeAlso: BP=0012h/AH=24h
  2721. ---------------------------------------------
  2722. INT 6F - HP ES-12 EXTENDED BIOS - WRITE CMOS MEMORY
  2723.     BP = 0012h
  2724.     AH = 24h
  2725.     BL = address of CMOS byte to write
  2726.     AL = new value
  2727. Return: AH = status
  2728.     BP, DS destroyed
  2729. SeeAlso: BP=0012h/AH=22h
  2730. ---------------------------------------------
  2731. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  2732. ---------------------------------------------
  2733. INT 6F - 10-NET - LOGIN
  2734.     AH = 00h
  2735.     DS:DX -> login record
  2736.         8 BYTEs user name
  2737.         8 BYTEs password
  2738.            12 BYTEs name of SuperStation
  2739. Return: CL = security level
  2740.     AX = status
  2741.         0000h successful
  2742.         01FFh time out on response
  2743.         02FFh network (hardware) error
  2744.         03FFh invalid password
  2745.         04FFh local rexource not available
  2746.         05FFh server resource not available
  2747.         06FFh already logged in under different name
  2748.         07FFh login security failure (node)
  2749.         08FFh not logged in
  2750.         09FFh position calc error
  2751.         0AFFh receive subfunction not = send subfunction (i.e. read, write)
  2752.         0BFFh request function not in range
  2753.         0CFFh no more server file handle entries left
  2754.         0DFFh no more shared file table entries left
  2755.         0EFFh no more user file handle entries left
  2756.         0FFFh chat permit not on
  2757.         10FFh not a server on request
  2758.         11FFh no transporter board error
  2759.         12FFh time out on send
  2760.         13FFh item not found (spool item not on queue)
  2761.         14FFh dos access incompatible
  2762.         15FFh record already locked
  2763.         16FFh invalid parameter
  2764.         17FFh record lock time out error
  2765.         18FFh currently spooling to named device
  2766.         19FFh dropped receive message (throttle)
  2767.         1AFFh open sharing violation
  2768.         1BFFh no more tuf entries left
  2769.         1CFFh not file owner on open
  2770.         1DFFh read security not passed
  2771.         1EFFh write security not passed
  2772.         1FFFh group security not passed
  2773.         20FFh security file failure
  2774.         21FFh activity file failure
  2775.         22FFh spool cntrl file failure
  2776.         23FFh device not mounted (spooling)
  2777.         24FFh spool file has not been terminated
  2778.         25FFh device not mounted or is not being shared
  2779.         26FFh duplicate node id
  2780.         27FFh file not found error
  2781.         28FFh no more files
  2782.         29FFh unknown internal system error
  2783.         2AFFh print queue is full or corrupted
  2784.         2BFFh invalid function
  2785.         2CFFh invalid handle
  2786.         2DFFh too many files opened
  2787.         2EFFh path not found
  2788.         2FFFh named file is active
  2789. /* I've gotten one submission which says FFxxh, and another with xxFFh */
  2790. /* I don't know which way around these should be, does somebody else know? */
  2791.         FF01h timeout
  2792.         FF02h network error
  2793.         FF03h invalid password
  2794.         FF04h no local buffer
  2795.         FF05h superstation not available
  2796.         FF06h node already logged in
  2797.         FF07h login not valid from this node
  2798.         FF08h node ID already in use
  2799.         FF16h invalid parameter (bad length, invalid node ID, etc)
  2800.         FF17h record locked by another user
  2801.         FF18h sent message has been dropped
  2802. SeeAlso: AH-01h
  2803. ---------------------------------------------
  2804. INT 6F - 10-NET - LOGOFF
  2805.     AH = 01h
  2806.     DS:DX -> superstation ID or nulls (12 bytes)
  2807. Return: CX = number of files closed
  2808.     AX = status (see AH=00h)
  2809.         FF08h superstation ID not already logged in
  2810. SeeAlso: AH=00h
  2811. ---------------------------------------------
  2812. INT 6F - 10-NET - STATUS OF NODE
  2813.     AH = 02h
  2814.     DS:DX -> 512-byte status record (see below)
  2815. Return: CF set on error
  2816.         AX = error code (see AH=00h)
  2817.     CF clear if successful
  2818.  
  2819. Format of node status record:
  2820. Offset    Size    Description
  2821.  00h  8 BYTEs    user name (0 if none)
  2822.  08h    BYTE    station type
  2823.            00h workstation
  2824.            01h superstation
  2825.            02h gateway station
  2826.            03h gateway active
  2827.            04h logged into multiple superstations
  2828.            05h reserved
  2829.  09h 24 BYTEs    list of superstations logged into more than one superstation
  2830.  21h 12 BYTEs    node ID
  2831.  2Dh    WORD    message count for this station (send for user node, receive for
  2832.         superstations)
  2833. ---for superstations only---
  2834.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  2835.  31h    BYTE    user service flag
  2836.         bit 7: gate
  2837.             6: print permit on
  2838.             4: SUBMIT is on
  2839.             3: mail waiting for node
  2840.             2: calendar waiting for you
  2841.             1: news waiting for you
  2842.             0: mail waiting for you
  2843.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  2844.  33h    BYTE    number of unprinted spool files
  2845.  34h    BYTE    number of opened files
  2846.  35h    BYTE    number of logged on nodes
  2847.  36h    BYTE    primary drive (1=A:)
  2848.  37h    BYTE    reserved
  2849.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  2850. 1F4h  3 BYTEs    time: sec/min/hrs
  2851. 1F7h  3 BYTEs    date: day/mon/year-1980
  2852. ---------------------------------------------
  2853. INT 6F - 10-NET - GET ADDRESS OF CONFIGURATION TABLE
  2854.     AH = 03h
  2855.     DS:DI -> node ID (optional)
  2856. Return: ES:BX -> configuration table 
  2857. SeeAlso: AH=13h
  2858.  
  2859. Format of configuration table:
  2860. Offset    Size    Description
  2861. -41    WORD    local device table address
  2862. -39    WORD    extended network error mapping table address
  2863. -37    WORD    shared device table address
  2864. -35    WORD    mounted device table address
  2865. -33    BYTE    receive buffer counter
  2866. -32    BYTE    collect buffer counter
  2867. -31    WORD    TUF address
  2868. -29    BYTE    enable flag
  2869. -28    BYTE    FCB keep flag
  2870. -27    WORD    reserved
  2871. ---up to here, 10-Net v3.3---
  2872. -25    WORD    count of dropped Send6F
  2873. -23    WORD    buffer start address
  2874. -21    WORD    comm driver base address
  2875. -19    WORD    send/receive retry count
  2876. -17    BYTE    number of 550ms loops before timeout
  2877. -16    WORD    UFH address
  2878. -14    WORD    CDIR address
  2879. -12    WORD    LTAB address
  2880. -10    WORD    SFH address
  2881. -8    WORD    FTAB address
  2882. -6    WORD    RLTAB address
  2883. -4    WORD    SMI address
  2884. -2    WORD    NTAB address
  2885.  00h    WORD    address of first CT_DRV
  2886.  02h    BYTE    number of DRV entries
  2887.  03h  8 BYTEs    login name
  2888.  0Bh 12 BYTEs    node ID (blank-padded)
  2889.  17h  6 BYTEs    node address
  2890.  1Dh    BYTE    flag
  2891.  1Eh    BYTE    CT_CFLG (chat permit)
  2892.         bit 1: sound bell
  2893.         bit 0: CHAT permit
  2894.  1Fh    BYTE    CT_PSFLG
  2895.         bit 5: PRINT permit
  2896.         bit 4: KB initiated
  2897.         bit 3: CHAT called FOXPTRM
  2898.         bit 2: SUBMIT active
  2899.         bit 1: SUBMIT received
  2900.         bit 0: SUBMIT permit
  2901.  20h    BYTE    in 10Net flag
  2902.  21h    WORD    receive message count
  2903.  23h    WORD    send message count
  2904.  25h    WORD    retry count
  2905.  27h    WORD    failed count
  2906.  29h    WORD    driver errors
  2907.  2Bh    WORD    dropped responses/CHATs
  2908.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  2909.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  2910.  3Ch    BYTE    active CB channel
  2911.  3Dh    BYTE    received 6F messages on queue
  2912.  3Eh  9 BYTEs    activity counters for channels 1-9
  2913. ---beyond here, 10-Net v3.3---
  2914.  47h    BYTE    bit 0 = RS232 gate
  2915.             1 = Send6F gate (user set)
  2916.  48h    DWORD    pointer into gate (user set)
  2917.  4Ch    DWORD    pointer into 10Net send
  2918.  50h  N WORDs    addresses of timer blocks
  2919. ---------------------------------------------
  2920. INT 6F - 10-NET - SEND
  2921.     AH = 04h
  2922.     DS:BX -> record
  2923.         12 BYTEs receiving node's ID
  2924.             if first byte has high-order bit set, message is
  2925.                directed to the CT_RGATE vector at the receiver
  2926.             if second byte is 00h, first byte is taken as a CB
  2927.                channel number and delivered to all nodes on same
  2928.                channel
  2929.            WORD  length of data at DX
  2930.     DS:DX -> data (max 1024 bytes)
  2931. Return: CF set on error
  2932.         AX = error code (see AH=00h)
  2933.     CF clear if successful
  2934. SeeAlso: AH=05h
  2935. ---------------------------------------------
  2936. INT 6F - 10-NET - RECEIVE
  2937.     AH = 05h
  2938.     CX = number of seconds before timeout
  2939.     DS:DX -> receive buffer (see below)
  2940. Return: CF set on error
  2941.         AX = error code (see AH=00h)
  2942.     CF clear if successful
  2943.         AH = FEh if dequeued message is a CB message
  2944. SeeAlso: AH=04h
  2945.  
  2946. Format of receive buffer:
  2947. Offset    Size    Description
  2948.  00h 12 BYTEs    sending node's ID
  2949.  0Ch    WORD    length of message
  2950.  0Eh  N BYTEs    message (maximum 1024 bytes)
  2951. ---------------------------------------------
  2952. INT 6F - 10-NET - LOCK HANDLE
  2953.     AH = 07h
  2954.     BX = file handle
  2955.     CX:DX = starting offset in file
  2956.     SI = record length
  2957. Return: CF set on error
  2958.         AX = error code (see also AH=00h)
  2959.         0002h file not found
  2960.     CF clear if successful
  2961. SeeAlso: AH=08h, INT 21/AH=5Ch
  2962. ---------------------------------------------
  2963. INT 6F - 10-NET - UNLOCK HANDLE
  2964.     AH = 08h
  2965.     BX = file handle
  2966.     AL = mode
  2967.         00h unlock all
  2968.         01h unlock record at CX:DX
  2969. Return: CF set on error
  2970.         AX = error code (see also AH=00h)
  2971.         0002h file not found
  2972.     CF clear if successful
  2973. SeeAlso: AH=07h, INT 21/AH=5Ch
  2974. ---------------------------------------------
  2975. INT 6F - 10-NET - SUBMIT
  2976.     AH = 09h
  2977.     DS:BX -> submit record (see below)
  2978.  
  2979. Format of submit record:
  2980. Offset    Size    Description
  2981.  00h 12 BYTEs    destination node ID (must be logged in)
  2982.  0Ch    WORD    length+2 of following 'command line' text
  2983.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  2984. ---------------------------------------------
  2985. INT 6F - 10-NET - CHAT
  2986.     AH = 0Ah
  2987.     DS:BX -> control parameters (see below)
  2988.     DS:DX -> chat message (see below)
  2989.  
  2990. Format of control parameters:
  2991. Offset    Size    Description
  2992.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  2993.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  2994.  10h 12 BYTEs    destination node ID
  2995.  
  2996. Format of chat message:
  2997. Offset    Size    Description
  2998.  00h    WORD    length+2 of following text
  2999.  02h  N BYTEs    text, max 101 bytes
  3000. ---------------------------------------------
  3001. INT 6F - 10-NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  3002.     AH = 0Bh
  3003.     AL = drive number or 0
  3004.     ES:SI = Ethernet address or 0
  3005.     DS:BX -> 31-byte ASCIZ semaphore name
  3006. Return: AL = status
  3007.         00h successful
  3008.         01h semaphore currently locked
  3009.         02h server not responding
  3010.         03h invalid semaphore name
  3011.         04h semaphore list is full
  3012.         05h invalid drive ID
  3013.         06h invalid Ethernet address
  3014.         07h not logged in
  3015.         08h write to network failed
  3016.         09h semaphore already logged in this CPU
  3017. Note:    same as INT 60/AH=12h
  3018. SeeAlso: AH=0Ch,INT 60/AH=12h
  3019. ---------------------------------------------
  3020. INT 6F - 10-NET - UNLOCK SEMAPHORE
  3021.     AH = 0Ch
  3022.     AL = drive number or 0
  3023.     ES:SI = Ethernet address or 0
  3024.     DS:BX -> 31-byte ASCIZ semaphore name
  3025. Return: AL = status (see also AH=0Bh)
  3026.         01h semaphore not locked
  3027. Note:    same as INT 60/AH=13h
  3028. SeeAlso: AH=0Bh,INT 60/AH=13h
  3029. ---------------------------------------------
  3030. INT 6F - 10-NET - WHO
  3031.     AH = 0Dh
  3032.     AL = type code
  3033.         01h return superstations only
  3034.         02h return non-superstations only
  3035.         otherwise return all
  3036.     CX = length of data
  3037.     DS:DX -> array of records to be filled (see below)
  3038. Return: CL = number of records returned (responding stations)
  3039.  
  3040. Format of station record:
  3041. Offset    Size    Description
  3042.  00h 12 BYTEs    node ID
  3043.  0Ch    BYTE    flags
  3044.         bit 1 = workstation
  3045.             2 = superstation
  3046.             3 = xgate
  3047.             4 = active gate
  3048. ---if AL = 01h---
  3049.  0Dh    BYTE    version number
  3050.     WORD    level number of 10Net software in responding node
  3051. ---if AL = 02h---
  3052.  0Dh  8 BYTEs    user ID
  3053.  15h    BYTE    version number
  3054.  16h    WORD    level number
  3055. ---------------------------------------------
  3056. INT 6F - 10-NET - SPOOL/PRINT
  3057.     AH = 0Eh
  3058.     DS:DX -> spool/print record (see below)
  3059. Return: CF set on error
  3060.         AX = error code (see also AH=00h)
  3061.         FF17h device not mounted
  3062.         FF18h already spooling to named device
  3063.     CF clear if successful
  3064.  
  3065. Format of Spool/Print record:
  3066. Offset    Size    Description
  3067.  00h    WORD    operation code
  3068.            00h initiate spool
  3069.            01h abort print
  3070.            02h close spool
  3071.            03h delete spool
  3072.            04h print
  3073.            05h get report info
  3074.            06h set chat template
  3075.            07h queue
  3076.            08h return queue
  3077.            09h queue non-spooled file for printing
  3078.  02h 11 BYTEs    file name in FCB format
  3079. ---if operation code = 00h or 06h---
  3080.  0Dh    BYTE    notification
  3081.         bit 7: queue to top
  3082.         bit 6: do ID page
  3083.         bit 5: no form feed
  3084.         bit 4: reserved
  3085.         bit 3: explicity queuing only
  3086.         bit 2: notify at print completion
  3087.         bit 1: notify server operator/reply
  3088.         bit 0: notify at print start
  3089.  0Eh    BYTE    days to keep (FFh=forever)
  3090.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  3091.         bits 4-7: remote drive to store spool file (1=A,...)
  3092.  10h    WORD    length of following data area
  3093.  12h  N BYTEs    up to 64 bytes of description
  3094. ---if operation code = 03h---
  3095.  0Dh  8 BYTEs    user ID to associate with filename
  3096. ---if operation code = 04h---
  3097.  0Dh    WORD    block number
  3098.  0Fh  8 BYTEs    user ID to associate with filename
  3099. ---if operation code = 05h---
  3100.  0Dh    BYTE    RRN to start retrieve
  3101.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  3102.         bit 3: if set, return entries for all users
  3103.  0Fh    WORD    length of following area
  3104.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  3105. ---if operation code = 07h---
  3106.  0Dh    BYTE    queue number
  3107.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  3108.  0Fh    WORD    number of bytes of test print to be done
  3109.  11h    BYTE    code: 01h print device
  3110.               02h test print count
  3111.               03h prn
  3112. ---if operation code = 08h---
  3113.  0Dh    BYTE    queue location or $SCNTL location to start access
  3114.             returns next item for access:
  3115.                 00h-7Fh queued items
  3116.                 80h-FEh non-queued, non-printed items
  3117.                 FFh    no more items
  3118.  0Eh    WORD    unused
  3119.  10h    WORD    length of following area
  3120.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records
  3121. ---if operation code = 09h---
  3122.  0Dh  3 BYTEs    unused
  3123.  10h  N BYTEs    path to non-spooled file to be queued for printing
  3124.  
  3125. Format of $SCNTL record:
  3126. Offset    Size    Description
  3127.  00h  8 BYTEs    user ID
  3128.  08h 11 BYTEs    filename in FCB format
  3129.  13h  6 BYTEs    node ID
  3130.  19h  3 BYTEs    creation date
  3131.  1Ch    BYTE    flags
  3132.         bit 7: queue to top
  3133.             6: do ID page
  3134.             5: no form feed at end
  3135.             4: reserved
  3136.             3: explicit queueing only
  3137.             2: notify at completion
  3138.             1: notify server operator/reply
  3139.             0: notify at start
  3140.  1Dh    BYTE    retention time in days
  3141.  1Eh    BYTE    printing device (LPTx)
  3142.  1Fh  3 BYTEs    date last printed (0 = never)
  3143.  22h    BYTE    device containing spoolfile
  3144.  23h    WORD    bytes to print for test print
  3145.  25h    WORD    block number to start print
  3146.  27h    BYTE    reserved
  3147. ---------------------------------------------
  3148. INT 6F - 10-NET - ATTACH/DETACH PRINTER
  3149.     AH = 10h
  3150.     AL = subfunction
  3151.         00h initiate spooling if LPT1 is mounted
  3152.         01h terminate spooling if LPT1 is mounted
  3153. SeeAlso: INT 21/AX=5D08h
  3154. ---------------------------------------------
  3155. INT 6F - 10-NET - LOCK FCB
  3156.     AH = 11h
  3157.     AL = mode
  3158.         01h sequential
  3159.         02h random
  3160.         03h random block
  3161.         CX = number of records
  3162.     DS:DX -> FCB
  3163. Return: CF set on error
  3164.         AX = error code (see also AH=00h)
  3165.         2 file not found
  3166.     CF clear if successful
  3167. SeeAlso: AH=12h
  3168. ---------------------------------------------
  3169. INT 6F - 10-NET - UNLOCK FCB
  3170.     AH = 12h
  3171.     AL = mode
  3172.         00h sequential
  3173.         01h random
  3174.         02h random block
  3175.         CX = number of records
  3176.     DS:DX -> FCB
  3177. Return: CF set on error
  3178.         AX = error code (see also AH=00h)
  3179.         2 file not found
  3180.     CF clear if successful
  3181. SeeAlso: AH=11h
  3182. ---------------------------------------------
  3183. INT 6F - 10-NET v3.3 - GET REMOTE CONFIGURATION TABLE ADDRESS
  3184.     AH = 13h
  3185.     DS:DX -> node ID, 12 bytes blank-padded
  3186. Return: CF set on error
  3187.         AX = error code (see AH=00h)
  3188.     CF clear if successful
  3189.         ES:BX = configuration table address on given machine
  3190. SeeAlso: AH=03h
  3191. ---------------------------------------------
  3192. INT 6F - 10-NET v3.3 - GET REMOTE MEMORY
  3193.     AH = 14h
  3194.     BX:SI = address of remote memory
  3195.     CX = length (<=1024 bytes)
  3196.     DS:DX -> node ID, 12 bytes blank-padded
  3197.     DS:DI -> area to receive remote memory image
  3198. Return: CF set on error
  3199.         AX = error code (see AH=00h)
  3200.     CF clear if successful
  3201.         CX = amount of memory copied to DS:SI
  3202. ---------------------------------------------
  3203. INT 6F - 10-NET v3.3 - GET SHARED DEVICE ENTRY
  3204.     AX = 1501h
  3205.     BX = zero-based index
  3206.     DS:SI -> node ID, 12 bytes blank-padded
  3207.     ES:DI -> 85-byte buffer for shared device table entry (see below)
  3208. Return: CF set on error
  3209.         AX = error code (see AH=00h)
  3210.     CF clear if successful
  3211.         ES:DI buffer contains shared device table entry of BXth device:
  3212. SeeAlso: AX=1502h,1503h
  3213.  
  3214. Format of shared device table entry:
  3215. Offset    Size    Description
  3216.  00h  8 BYTEs    device
  3217.  08h  8 BYTEs    alias
  3218.  10h 64 BYTEs    path
  3219.  50h  8 BYTEs    password
  3220.  58h    BYTE    access
  3221.  59h  4 BYTEs    mask
  3222. ---------------------------------------------
  3223. INT 6F - 10-NET v3.3 - SET SHARED DEVICE ENTRY
  3224.     AX = 1502h
  3225.     DS:SI -> node ID, 12 bytes blank-padded
  3226.     ES:DI -> valid shared device table entry
  3227. Return: CF set on error
  3228.         AX = error code (see AH=00h)
  3229.     CF clear if successful
  3230. SeeAlso: AX=1501h,1503h
  3231. ---------------------------------------------
  3232. INT 6F - 10-NET v3.3 - DELETE SHARED DEVICE ENTRY
  3233.     AX = 1503h
  3234.     BX = zero-based index
  3235.     DS:SI -> node ID, 12 bytes blank-padded
  3236. Return: CF set on error
  3237.         AX = error code (see AH=00h)
  3238.     CF clear if successful
  3239. SeeAlso: AX=1501h,1502h
  3240. ---------------------------------------------
  3241. INT 6F - 10-NET v3.3 - MOUNT
  3242.     AH = 17h
  3243.     AL = local drive number (0=A:)
  3244.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  3245.     DS:DX -> node ID, 12 bytes blank-padded
  3246. Return: CF set on error
  3247.         AX = error code (see AH=00h)
  3248.     CF clear if successful
  3249. SeeAlso: AH=18h
  3250. ---------------------------------------------
  3251. INT 6F - 10-NET v3.3 - UNMOUNT
  3252.     AH = 18h
  3253.     AL = local drive number (0=A:)
  3254.     BL = type
  3255.         00h        disk
  3256.         01h-03h LPTn
  3257.         04h,05h COMx
  3258. Return: CF set on error
  3259.         AX = error code (see AH=00h)
  3260.     CF clear if successful
  3261. SeeAlso: AH=17h
  3262. ---------------------------------------------
  3263. INT 70 - IRQ8 - AT/XT286/PS50+ - REAL-TIME CLOCK
  3264. Note:    may be masked by setting bit 0 on I/O port A1h
  3265. ---------------------------------------------
  3266. INT 71 - IRQ9 - AT/XT286/PS50+ - LAN ADAPTER 1
  3267. Notes:    may be masked by setting bit 1 on I/O port A1h
  3268.     rerouted to INT 0A by BIOS
  3269. SeeAlso: INT 0A
  3270. ---------------------------------------------
  3271. INT 72 - IRQ10 - AT/XT286/PS50+ - RESERVED
  3272. Note:    may be masked by setting bit 2 on I/O port A1h
  3273. ---------------------------------------------
  3274. INT 73 - IRQ11 - AT/XT286/PS50+ - RESERVED
  3275. Note:    may be masked by setting bit 3 on I/O port A1h
  3276. ---------------------------------------------
  3277. INT 74 - IRQ12 - PS50+ - MOUSE INTERRUPT
  3278. Note:    may be masked by setting bit 4 on I/O port A1h
  3279. SeeAlso: INT 33
  3280. ---------------------------------------------
  3281. INT 75 - IRQ13 - AT/XT286/PS50+ - 80287 ERROR
  3282. Notes:    may be masked by setting bit 5 on I/O port A1h
  3283.     rerouted to INT 02 by BIOS
  3284. ---------------------------------------------
  3285. INT 76 - IRQ14 - AT/XT286/PS50+ - FIXED DISK
  3286. Note:    may be masked by setting bit 6 on I/O port A1h
  3287. SeeAlso: INT 0E"IRQ6"
  3288. ---------------------------------------------
  3289. INT 77 - IRQ15 - AT/XT286/PS50+ - RESERVED
  3290. Note:    may be masked by setting bit 7 on I/O port A1h
  3291. ---------------------------------------------
  3292. INT 78 - not used
  3293. ---------------------------------------------
  3294. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  3295. Return: CF set if no keystroke available
  3296.         AX = FFFFh
  3297.     CF clear if key pressed
  3298.         AX = keystroke
  3299. Notes:    if a keystroke is available, it is removed from the keyboard buffer
  3300.       before being returned
  3301.     AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  3302.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  3303. ---------------------------------------------
  3304. INT 7A - Novell NetWare - LOW-LEVEL API
  3305.     ???
  3306. SeeAlso: INT 64
  3307. ---------------------------------------------
  3308. INT 7A - AutoCAD Device Interface
  3309.     ???
  3310. ---------------------------------------------
  3311. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  3312.     AH = 04h
  3313.     ???
  3314. Return: ???
  3315. SeeAlso: AH=06h
  3316. ---------------------------------------------
  3317. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  3318.     AH = 06h
  3319.     ???
  3320. Return: ???
  3321. SeeAlso: AH=04h
  3322. ---------------------------------------------
  3323. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  3324.     AH = 09h
  3325.     BX = 8020h (synchronous request)
  3326.     CX = 0000h
  3327.     DX = ID of session manager (SESSMGR)
  3328.     AL = service
  3329.         01h get session ID
  3330.         02h get session info
  3331.         04h dettach from session
  3332.         05h attach to session
  3333.         06h get list of windows available
  3334.         07h get environment of window
  3335.         08h get 'PIF' (program information file) info
  3336.         0Ah get base window ID
  3337.         0Bh get cursor info
  3338.     ES:DI -> control block
  3339. Return: ???
  3340. ---------------------------------------------
  3341. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  3342.     AH = 09h
  3343.     BX = 8020h (synchronous request)
  3344.     CX = 0000h
  3345.     DX = ID of keyboard manager
  3346.     AL = service
  3347.         01h connect to keyboard
  3348.         02h disconnect from keyboard
  3349.         03h read from keyboard
  3350.         04h send keystroke to session
  3351.         05h disable input
  3352.         06h enable input
  3353.         07h update status code
  3354.     ES:DI -> control block
  3355. Return: ???
  3356. ---------------------------------------------
  3357. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  3358.     AH = 09h
  3359.     BX = 8020h (synchronous request)
  3360.     CX = 00FFh
  3361.     DX = ID of window service controller (WSCTRL)
  3362.     AL = service
  3363.         01h connect to WS control
  3364.         02h disconnect from WS control
  3365.         03h add a window
  3366.         04h change window's position on screen
  3367.         05h change window's size
  3368.         06h change window's color
  3369.         07h change window's position in the presentation space
  3370.         08h hide/unhide toggle
  3371.         09h enlarge/reduce toggle
  3372.         0Ah change screen background color
  3373.         0Bh get window's position on screen
  3374.         0Ch get window's size
  3375.         0Dh get window's color
  3376.         0Eh get window's position in the presentation space
  3377.         0Fh determine whether hidden
  3378.         10h determine whether enlarged
  3379.         11h get background color
  3380.         12h get window names
  3381.         13h delete all windows from profile
  3382.         14h pick active window
  3383.         15h redraw screen
  3384.         16h redraw window
  3385.         17h delete a window from profile
  3386.         18h get active window
  3387.         19h get active screen
  3388.         1Ah get window data
  3389.         1Bh change window data
  3390.         1Ch select active screen
  3391.     ES:DI -> control block
  3392. Return: ???
  3393. ---------------------------------------------
  3394. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  3395.     AH = 09h
  3396.     BX = 8020h
  3397.     CX = 00FFh
  3398.     DX = ID of PCPSM
  3399.     AL = service
  3400.         01h define presentation space
  3401.         02h delete presentation space
  3402.         03h display presentation space
  3403.         04h position cursor in presentation space
  3404.         05h change default presentation space
  3405.     ES:DI -> control block
  3406. Return: ???
  3407. ---------------------------------------------
  3408. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  3409.     AH = 09h
  3410.     BX = 8020h
  3411.     CX = 00FFh
  3412.     DX = ID of 3270EML
  3413.     AL = service
  3414.         01h connect
  3415.         02h disconnect
  3416.     ES:DI -> control block
  3417. Return: ???
  3418. ---------------------------------------------
  3419. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  3420.     AH = 09h
  3421.     BX = 8020h
  3422.     CX = 00FFh
  3423.     DX = ID of OIAM
  3424.     AL = service
  3425.         01h read Operator Information Area
  3426.         02h read OIA subset
  3427.     ES:DI -> control block
  3428. Return: ???
  3429. Note: the OIA is the 25th line on the Host session
  3430. ---------------------------------------------
  3431. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  3432.     AH = 09h
  3433.     BX = 8020h
  3434.     CX = 00FFh
  3435.     DX = ID of XLATE
  3436.     AL = service
  3437.         01h translate from host characters to ASCII and vice versa
  3438.         (determined by control block byte 11)
  3439.     ES:DI -> control block
  3440. Return: ???
  3441. ---------------------------------------------
  3442. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  3443.     AH = 09h
  3444.     BX = 8020h
  3445.     CX = 00FFh
  3446.     DX = ID of copy service
  3447.     AL = service
  3448.         01h copy string from one presentation space to another
  3449.         02h copy block from one presentation space to another
  3450.         03h connect to PC session for copy
  3451.         04h disconnect PC session from copy
  3452.     ES:DI -> control block
  3453. Return: ???
  3454. ---------------------------------------------
  3455. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  3456.     AH = 09h
  3457.     BX = 8020h
  3458.     CX = 00FFh
  3459.     ES:DI -> control block
  3460.     DX = ID of INDJQRY  
  3461.         get environment size
  3462.        = ID of INDJASY
  3463.         request DOS functions from workstation
  3464.        = ID of MEMORY
  3465.         AL = function
  3466.             01h allocate memory
  3467.             02h deallocate memory
  3468.             03h modify allocated size
  3469. Return: ???
  3470. ---------------------------------------------
  3471. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  3472.     AH = 09h
  3473.     BX = 4000h for async request, 8028h for synchronous request
  3474.     CX = 0000h
  3475.     DX = ID of MFIC
  3476.     AL = service
  3477.        01h connect to host
  3478.        02h disconnect from host
  3479.        03h read DFT structured data from host
  3480.        04h write DFT structured data to host
  3481.        05h create a host buffer
  3482.     ES:DI -> control block
  3483. ---------------------------------------------
  3484. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  3485.     AH = 13h
  3486.     ???
  3487. Return: ???
  3488. ---------------------------------------------
  3489. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  3490.     AH = 81h
  3491.     ES:DI -> 8-char blank-padded gate name
  3492.         "SESSMGR ", "KEYBOARD", "WSCTRL  ", "MFIC    ", "PCPSM     ",
  3493.         "3270EML ", "COPY    ", "XLATE     ", "OIAM    ", "MEMORY  ",
  3494.         "INDJQRY ", or "INDJASY "
  3495. Return: DX = gate ID
  3496. ---------------------------------------------
  3497. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  3498.     AH = 83h
  3499.     ???
  3500. Return: ???
  3501. ---------------------------------------------
  3502. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  3503.     AX = FDCBh
  3504. Return: DX:AX -> PCS/3270 signature block if loaded (see below)
  3505.  
  3506. Format of signature block:
  3507. Offset    Size    Description
  3508.  04h    WORD    PCS/3270 signature (5741h)
  3509.  06h    WORD    version (0501h = PCS/3270 v1.0)
  3510. ---------------------------------------------
  3511. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  3512.     AX = FE01h
  3513.     ???
  3514. Return: ???
  3515. SeeAlso: AX=FE02h
  3516. ---------------------------------------------
  3517. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  3518.     AX = FE02h
  3519.     ???
  3520. Return: ???
  3521. SeeAlso: AX=FE01h
  3522. ---------------------------------------------
  3523. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  3524.     AX = FF01h
  3525.     ES:DI -> API function handler routine
  3526. Return: CX = 1200h
  3527. SeeAlso: AX=FF02h,FF03h
  3528. ---------------------------------------------
  3529. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  3530.     AX = FF02h
  3531. Return: CX = 1200h
  3532. SeeAlso: AX=FF01h
  3533. ---------------------------------------------
  3534. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  3535.     AX = FF03h
  3536.     ES:DI -> send/receive function handler routine
  3537. Return: CX = 1200h
  3538. SeeAlso: AX=FF01h
  3539. ---------------------------------------------
  3540. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  3541.     AX = FF04h
  3542.     ES:DI -> ???
  3543. Return: CX = 1200h
  3544. ---------------------------------------------
  3545. INT 7B - Btrieve API
  3546.     DS:DX -> 38-byte parameter record (see below)
  3547. Return: return code field set
  3548. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  3549.       check
  3550.  
  3551. Format of Btrieve parameter record:
  3552. Offset    Size    Description
  3553.  00h    DWORD    pointer to data buffer
  3554.  04h    WORD    data buffer length
  3555.  06h    DWORD    pointer to 90-byte record containing positioning info
  3556.         (should be same for all calls for same file)
  3557.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  3558.         (should be same for all calls for same file)
  3559.  0Eh    WORD    function code
  3560.         00h open
  3561.         01h close
  3562.         02h insert
  3563.         03h update
  3564.         04h delete
  3565.         05h get_equal
  3566.         06h get_next
  3567.         07h get_prev
  3568.         08h get_greater
  3569.         09h get_gr_eql
  3570.         0Ah get_less
  3571.         0Bh get_less_eq
  3572.         0Ch get_first
  3573.         0Dh get_last
  3574.         0Eh create
  3575.         0Fh stat
  3576.         10h extend
  3577.         11h set_dir: set directory information
  3578.         12h get_dir: get directory information
  3579.         13h begin_trans
  3580.         14h end_trans
  3581.         15h abort_trans
  3582.         16h get_pos: get record position number
  3583.         17h get_direct: get data by sending record position
  3584.         18h step_direct
  3585.         19h stop
  3586.         1Ah version
  3587.         1Bh unlock
  3588.         1Ch reset
  3589.         1Dh set owner
  3590.         1Eh clear owner
  3591.         1Fh create supplemental index
  3592.         20h drop supplemental index
  3593.         21h step first
  3594.         22h step last
  3595.         23h step next
  3596.         31h ???
  3597.         37h ???
  3598.         38h ???
  3599.         39h ???
  3600.         3Ah ???
  3601.         3Bh ???
  3602.         3Ch ???
  3603.         3Dh ???
  3604.         3Eh ???
  3605.         3Fh ???
  3606.         add 100 (64h) for a single-record wait lock (automatically
  3607.             released on next get)
  3608.         add 200 (C8h) for a single-record nowait lock (nowait lock
  3609.             returns error 54h or 55h if record already locked)
  3610.         add 300 (12Ch) for a multiple-record wait lock (not released
  3611.             until unlock called)
  3612.         add 400 (190h) for a multiple-record nowait lock (nowait lock
  3613.             returns error 54h or 55h if record already locked)
  3614.  10h    DWORD    pointer to file name/key buffer
  3615.  14h    BYTE    key length
  3616.  15h    BYTE    key number
  3617.  16h    DWORD    pointer to status code (see below)
  3618.  1Ah    WORD    interface code (version specific)
  3619.  
  3620. Values for status code:
  3621.  00h successful
  3622.  01h invalid operation
  3623.  02h I/O error
  3624.  03h file not open
  3625.  04h key value not found
  3626.  05h duplicate key value
  3627.  06h invalid key number
  3628.  07h different key number
  3629.  08h invalid positioning
  3630.  09h end of file
  3631.  0Ah modifiable key value error
  3632.  0Bh invalid file name
  3633.  0Ch file not found
  3634.  0Dh extended file error
  3635.  0Eh pre-image open error
  3636.  0Fh pre-image I/O error
  3637.  10h expansion error
  3638.  11h close error
  3639.  12h disk full
  3640.  13h unrecoverable error
  3641.  14h record manager inactive
  3642.  15h key buffer too short
  3643.  16h data buffer length overrun
  3644.  17h position block length
  3645.  18h page size error
  3646.  19h create I/O error
  3647.  1Ah number of keys
  3648.  1Bh invalid key position
  3649.  1Ch invalid record length
  3650.  1Dh invalid key length
  3651.  1Eh not a Btrieve file
  3652.  1Fh file already extended
  3653.  20h extended I/O error
  3654.  22h invalid extension name
  3655.  23h directory error
  3656.  24h transaction error
  3657.  25h transaction is active
  3658.  26h transaction control file I/O error
  3659.  27h end/abort transaction error
  3660.  28h transaction max files
  3661.  29h operation not allowed
  3662.  2Ah incomplete accelerated access
  3663.  2Bh invalid record address
  3664.  2Ch null key path
  3665.  2Dh inconsistent key flags
  3666.  2Eh access to file denied
  3667.  2Fh maximum open files
  3668.  30h invalid alternate sequence definition
  3669.  31h key type error
  3670.  32h owner already set
  3671.  33h invalid owner
  3672.  34h error writing cache
  3673.  35h invalid interface
  3674.  36h variable page error
  3675.  37h autoincrement error
  3676.  38h incomplete index
  3677.  39h expanded memory error
  3678.  3Ah compression buffer too short
  3679.  3Bh file already exists
  3680.  50h conflict
  3681.  51h lock error
  3682.  52h lost position
  3683.  53h read outside transaction
  3684.  54h record in use
  3685.  55h file in use
  3686.  56h file table full
  3687.  57h handle table full
  3688.  58h incompatible open mode
  3689.  5Dh incompatible lock type
  3690.  5Eh permission error
  3691. ---------------------------------------------
  3692. INT 7C - IBM REXX88PC command language
  3693.     ???
  3694. ---------------------------------------------
  3695. INT 7D - not used
  3696. ---------------------------------------------
  3697. INT 7E - not used
  3698. ---------------------------------------------
  3699. INT 7F - HDILOAD.EXE - 8514/A VIDEO CONTROLLER INTERFACE
  3700.     AX = function
  3701.         0105h get entry points
  3702.         Return: CF set on error
  3703.             CF clear if successful
  3704.                 CX:DX -> array of FAR pointers to entry points
  3705. Note:    most functions are invoked by pushing the DWORD parameter block pointer
  3706.       and then performing a FAR call via the appropriate vector of the
  3707.       entry point array
  3708.  
  3709. Function numbers: (do FAR call via entry_points+4*function)
  3710.  08h    HOPEN
  3711.  10h    HINT
  3712.  13h    HLDPAL
  3713.  15h    HBBW
  3714.  17h    HBBR
  3715.  18h    HBBCHN
  3716.  1Dh    HQMODE
  3717.  22h    HCLOSE
  3718.  30h    HINIT
  3719.  31h    HSYNC
  3720.  39h    HSPAL
  3721.  3Ah    HRPAL 
  3722. ---------------------------------------------
  3723. INT 7F - Halo88 - API
  3724.     BX = function
  3725.         64h arc
  3726.         65h bar
  3727.         66h box
  3728.         67h circle
  3729.         68h clr
  3730.         69h default hatch style
  3731.         6Ah default line style
  3732.         6Bh delhcur
  3733.         6Ch delln / deltcur
  3734.         6Dh ellipse
  3735.         6Eh fill
  3736.         6Fh flood
  3737.         70h flood2
  3738.         71h init graphics
  3739.         72h init hcur
  3740.         73h init marker
  3741.         74h init tcur
  3742.         75h inqarc
  3743.         76h inqbknd
  3744.         77h inqclr
  3745.         78h inqerr
  3746.         79h inqgcur
  3747.         7Ah inqhcur
  3748.         7Bh inqmarker
  3749.         7Dh inqtcur
  3750.         7Eh inqtext
  3751.         7Fh lnabs
  3752.         80h lnrel
  3753.         81h markerabs
  3754.         82h markerrel
  3755.         83h moveabs
  3756.         84h movehcurabs
  3757.         85h movehcurrel
  3758.         86h moverel
  3759.         87h movetcurabs
  3760.         88h movetcurrel
  3761.         89h movefrom
  3762.         8Ah moveto
  3763.         8Bh pie
  3764.         8Ch polylnabs
  3765.         8Dh polylnrel
  3766.         8Eh ptabs
  3767.         8Fh ptrel
  3768.         91h setasp
  3769.         92h set color
  3770.         93h set font
  3771.         94h set hatch style
  3772.         95h set line style
  3773.         97h settext
  3774.         98h set text color
  3775.         99h btext
  3776.         9Ah setseg
  3777.         9Bh display
  3778.         9Ch setscreen
  3779.         9Eh close graphics
  3780.         9Fh ftinit
  3781.         A0h ftlocate
  3782.         A1h ftext
  3783.         A5h set viewport
  3784.         A6h set window
  3785.         A7h set world
  3786.         AAh ftcolor
  3787.         ACh initlp
  3788.         ADh inqasp
  3789.         AEh inqdev
  3790.         AFh inqdisplay
  3791.         B0h inqft
  3792.         B1h inqftcolor
  3793.         B2h inqinterlace
  3794.         B3h inqlpa
  3795.         B4h inqlpg
  3796.         B5h inqmode
  3797.         B6h inqscreen
  3798.         B7h inqversion
  3799.         B8h roam
  3800.         B9h scroll
  3801.         BAh setieee
  3802.         BBh set interlace
  3803.         BCh shift
  3804.         BDh start graphics
  3805.         BEh vpan
  3806.         CBh gwrite
  3807.         CCh gread
  3808.         CDh setxor
  3809.         CEh rbox
  3810.         CFh rcir
  3811.         D0h rlnabs
  3812.         D1h rlnrel
  3813.         D2h delbox
  3814.         D3h delcir
  3815.         D5h setseg2
  3816.         DCh worldoff
  3817.         DDh mapwtod
  3818.         DEh mapdtow
  3819.         DFh mapwton
  3820.         E0h mapntow
  3821.         E1h mapdton
  3822.         E2h mapntod
  3823.         E3h inqworld
  3824.         E4h inqviewport
  3825.         E5h set line width
  3826.         E6h lnjoint
  3827.         E7h set locator
  3828.         E8h read locator
  3829.         E9h setdev
  3830.         EBh setstext
  3831.         ECh setstclr
  3832.         EDh setstang
  3833.         EEh stext
  3834.         EFh inqstext
  3835.         F0h setdegree
  3836.         F1h inqstsize
  3837.         F2h polyfabs
  3838.         F3h polyfrel
  3839.         F4h inqdrange
  3840.         F5h inqstang
  3841.         F6h orglocator
  3842.         F7h inqlocator
  3843.         F8h inqarea
  3844.         F9h setipal
  3845.         FAh setborder
  3846.         FBh inqcrange
  3847.         FEh setclip
  3848.         FFh fcir
  3849.            100h setcrange
  3850.            101h setdrange
  3851.            102h setlattr
  3852.            103h polycabs
  3853.            104h polycrel
  3854.            108h memcom
  3855.            109h memexp
  3856.            10Ah memmov
  3857.            10Eh movefx
  3858.            10Fh movetx
  3859.            110h inqrgb
  3860.            111h save image
  3861.            112h restore image
  3862.            113h setapal
  3863.            114h setxpal
  3864.            118h inqtsize
  3865.            12Eh gprint
  3866.            130h setprn
  3867.            131h setpattr
  3868.            133h setbattr
  3869.            135h pexpand
  3870.            136h ptnorm
  3871.            137h pfnorm
  3872.            13Bh inqprn
  3873.            13Ch lopen
  3874.            13Dh lclose
  3875.            13Eh lappend
  3876.            13Fh lrecord
  3877.            140h lswitch
  3878.            142h inqfun
  3879.            15Dh lsetup
  3880.            15Eh lrest
  3881.            15Fh lsave
  3882.     additional parameters on stack
  3883. Return: ???
  3884. Notes:    Halo88 is a suite of graphics routines
  3885.     according to Stuart Kemp, the code appears to make no provisions for
  3886.        chaining
  3887. ---------------------------------------------
  3888. INT 7F - HLLAPI (IBM 3270 High-Level Language API)
  3889.     AX = 0104h (HLLAPI gate ID)
  3890.     BX = 0000h
  3891.     DS:SI -> parameter control block (see below)
  3892. Return: parameter control block updated
  3893.  
  3894. Format of parameter control block:
  3895. Offset    Size    Description
  3896.  00h  3 BYTEs    signature = 'PCB'
  3897.  03h    BYTE    function number (see below)
  3898.  04h    WORD    segment of control string
  3899.  06h    WORD    offset of control string
  3900.  08h    WORD    length of control string, unless explicit end-of-str char set
  3901.  0Ah    BYTE    unused
  3902.  0Bh    WORD    return code
  3903.  0Dh    WORD    maximum length of control string
  3904.  
  3905. Values for function number:
  3906.  00h    Query system (Attachmate implementation only)
  3907.  01h    Connect presentation space
  3908.  02h    Disconnect presentation space
  3909.  03h    Send string of keystrokes as if typed from keyboard
  3910.  04h    Wait ~60s, returns status of presentation space
  3911.  05h    Copy current presentation space into a user-defined buffer
  3912.  06h    Search presentation space for first occurrence of a specified string
  3913.  07h    Query cursor location in current presentation space
  3914.  08h    Copy part or all of current presentation space into user buffer
  3915.  09h    Set session parameters; parameters vary by vendor
  3916.  0Ah    Get info on sessions currently connected
  3917.  0Bh    Lock current presentation space
  3918.  0Ch    Unlock previously locked presentation space
  3919.  0Dh    Return copy of operator info area (OIA) of current presentation space
  3920.  0Eh    get attribute byte for given position in the current presentation space
  3921.  0Fh    copy string of characters to the current presentation space
  3922.  10h    workstation control functions
  3923.  11h    storage manager functions, intended primarily for BASIC applications
  3924.  12h    set delay period in half-second intervals
  3925.  14h    get info on level of workstation support used
  3926.  15h    reset session parameters to default values
  3927.  16h    get detailed info on the current session
  3928.  17h    start host notification to application on presentation sp or OIA update
  3929.  18h    check host update when host notification enabled
  3930.  19h    stop host notification
  3931.  1Eh    search field within current presentation space for string
  3932.  1Fh    get first positionof a selected field in the current presentation space
  3933.  20h    get length of specified field
  3934.  21h    copy string into a specified field
  3935.  22h    copy specified field into a user-defined buffer
  3936.  23h    create alternate presentation space (IBM only), don't use with BASIC
  3937.  24h    switch to alternate presentation space (IBM only), not with BASIC
  3938.  25h    display cursor in specified area (IBM only), don't use with BASIC
  3939.  26h    display alternate presentation space (IBM only), don't use with BASIC
  3940.  27h    delete alternate presentation space (IBM only), don't use with BASIC
  3941.  32h    start intercepting keystrokes to allow filtering
  3942.  33h    get keystrokes after turning on interception
  3943.  34h    notify operator when keystroke rejected by filter subroutine
  3944.  35h    stop intercepting keystrokes
  3945.  5Ah    send file
  3946.  5Bh    receive file
  3947.  5Ch    run a program
  3948.  5Dh    execute DOS command
  3949.  63h    change presentation space position to PC display row/col or vice versa
  3950.  FFh    Get info on DCA implementation
  3951.  
  3952. Session Parameters for function 09h:
  3953.  ATTRIB        return attributes in hex
  3954.  NOATTRIB    return attributes as blanks
  3955.  CONPHYS    make physical connection
  3956.  CONLOG        only make logical connection
  3957.  EAB        copy extended attribute bytes along with data 
  3958.  NOEAB        copy data only
  3959.  ESC=n        set escape character to "n" (default '@')
  3960.  EOT=n        set end of string character (default 00h)
  3961.  FPAUSE        full-duration pause
  3962.  IPAUSE        interruptible pause
  3963.  STRLEN        use explicit string lengths
  3964.  STREOT        use terminated strings
  3965.  SRCHALL    search entire presentation space
  3966.  SRCHFROM    search from specified offset
  3967.  SRCHFRWD    search forward from position 1
  3968.  SRCHBKWD    search backward from last position in presentation space
  3969.  TWAIT        wait specified time for keyboard ready
  3970.  LWAIT        wait until keyboard ready
  3971.  NWAIT        no wait
  3972.  TRON        enable tracing
  3973.  TROFF        disable tracing
  3974.  AUTORESET    send reset before sending keys with function 03h
  3975.  NORESET    don't send reset
  3976.  QUIET        don't display messages sent with INT 21/AH=9
  3977.  NOQUIET    allow messages to be displayed
  3978.  TIMEOUT=n    set timeout in 30-second intervals, 0 = wait until ^Break
  3979.  XLATE        translate extended attribute bytes
  3980.  NOXLATE    don't translate
  3981.  NEWRET        use HLLAPI v3.0 return code conventions
  3982.  OLDRET        use HLLAPI v2.0 return code conventions
  3983. ---------------------------------------------
  3984. INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
  3985.     AL = request ID
  3986.         01h "Request"/"RequestDirect"
  3987.         ES:BX -> pRq
  3988.             DX ignored
  3989.         04h "Wait"
  3990.         ES:BX -> ppMsgRet
  3991.         DX = exchange
  3992.         05h "AllocExch"
  3993.         ES:BX -> pExchRet
  3994.         06h "DeAllocExch"
  3995.         DX = exchange
  3996.         07h "Check"
  3997.         ES:BX -> ppMsgRet
  3998.         DX = exchange
  3999.     CX = 4354h ('CT')
  4000. Return: AX = status
  4001.         0000h successful
  4002. ---------------------------------------------
  4003. INT 80 - Q-PRO4 - ???
  4004. ---------------------------------------------
  4005. INT 80 - reserved for BASIC
  4006. ---------------------------------------------
  4007. INT 81 - reserved for BASIC
  4008. ---------------------------------------------
  4009. INT 82 - reserved for BASIC
  4010. ---------------------------------------------
  4011. INT 83 - reserved for BASIC
  4012. ---------------------------------------------
  4013. INT 84 - reserved for BASIC
  4014. ---------------------------------------------
  4015. INT 85 - reserved for BASIC
  4016. ---------------------------------------------
  4017. INT 86 - Relocated (by NETBIOS) INT 18
  4018. ---------------------------------------------
  4019. INT 86 - used by BASIC while in interpreter
  4020. ---------------------------------------------
  4021. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  4022. ---------------------------------------------
  4023. INT 87 - used by BASIC while in interpreter
  4024. ---------------------------------------------
  4025. INT 87 - APL*PLUS/PC - ????
  4026. ---------------------------------------------
  4027. INT 88 - used by BASIC while in interpreter
  4028. ---------------------------------------------
  4029. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  4030.     AL = 00h
  4031.     BX = STPTR of the variable to be assigned
  4032.     ES:SI -> model of type, rank, and shape (see below)
  4033. Return: ES:DI -> first data byte of object
  4034.     DX:CX = number of elements in the object
  4035. Format of shape model:
  4036. Offset    Size    Description
  4037.  00h    BYTE    type
  4038.         01h character (2-byte dimension sizes)
  4039.         02h integer (2-byte dimension sizes)
  4040.         08h floating point (2-byte dimension sizes)
  4041.         11h character (4-byte dimension sizes)
  4042.         12h integer (4-byte dimension sizes)
  4043.         18h floating point (4-byte dimension sizes)
  4044.  01h    BYTE    rank
  4045.  02h    WORD/DWORD first dimension of shape
  4046.  N    WORD/DWORD second dimension of shape
  4047.     ...
  4048. ---------------------------------------------
  4049. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  4050.     AL = 01h
  4051.     AH = rank
  4052.     BX = STPTR of the variable to be assigned
  4053.     CX = first dimension (if any)
  4054.     DX = second dimension (if any)
  4055. Return: ES:DI -> object
  4056.     CX = number of elements in the object
  4057. Note:    each dimension must be 32767 or smaller
  4058. SeeAlso: AL=02h,08h
  4059. ---------------------------------------------
  4060. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  4061.     AL = 02h
  4062.     AH = rank
  4063.     BX = STPTR of the variable to be assigned
  4064.     CX = first dimension (if any)
  4065.     DX = second dimension (if any)
  4066. Return: ES:DI -> object
  4067.     CX = number of elements in the object
  4068. Note:    each dimension must be 32767 or smaller
  4069. SeeAlso: AL=01h,08h
  4070. ---------------------------------------------
  4071. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  4072.     AL = 08h
  4073.     AH = rank
  4074.     BX = STPTR of the variable to be assigned
  4075.     CX = first dimension (if any)
  4076.     DX = second dimension (if any)
  4077. Return: ES:DI -> object
  4078.     CX = number of elements in the object
  4079. Note:    each dimension must be 32767 or smaller
  4080. SeeAlso: AL=01h,02h
  4081. ---------------------------------------------
  4082. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  4083.     AL = F5h
  4084.     BX = STPTR of object
  4085. ---------------------------------------------
  4086. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  4087.     AL = F6h
  4088.     BX = STPTR of object
  4089. SeeAlso: AL=F7h,F8h
  4090. ---------------------------------------------
  4091. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  4092.     AL = F7h
  4093.     BX = STPTR of object
  4094. SeeAlso: AL=F6h,F8h
  4095. ---------------------------------------------
  4096. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  4097.     AL = F8h
  4098.     BX = STPTR of object
  4099. Return:  BX = 0000h eligible
  4100.           0001h not eligible
  4101. SeeAlso: AL=F6h,F7h
  4102. ---------------------------------------------
  4103. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  4104.     AL = F9h
  4105.     ES:SI -> name
  4106.     CX = length of name
  4107. Return: CF set if name ill-formed or already in use
  4108.         BX = STPTR if already in symbol table
  4109.     CF clear if name is available for use
  4110.         BX = 0000h
  4111. Note:    does not force the name into the workspace
  4112. SeeAlso: AL=FEh,FFh
  4113. ---------------------------------------------
  4114. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  4115.     AL = FCh
  4116.     BX = amount of memory needed (paragraphs)
  4117. Return: CF clear if memory available
  4118.     CF set if a workspace compaction is required
  4119. SeeAlso: AL=FDh
  4120. ---------------------------------------------
  4121. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  4122.     AL = FDh
  4123. Return: BX = number of paragraphs available in workspace
  4124. SeeAlso: AL=FCh
  4125. ---------------------------------------------
  4126. INT 88 - APL*PLUS/PC - CREATE NAME
  4127.     AL = FEh
  4128.     ES:SI -> name
  4129.     CX = length of name
  4130. Return: BX = STPTR of name
  4131.     DX = interpreter's data segment
  4132. SeeAlso: AL=F9h,FFh
  4133. ---------------------------------------------
  4134. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  4135.     AL = FFh
  4136.     ES:SI -> name
  4137.     CX = length of name
  4138. Return: CF set if name ill-formed or already in use
  4139.         BX = STPTR if already in symbol table
  4140.     CF clear if name is available for use
  4141.         BX = 0000h
  4142. Note:    forces the name into the workspace and makes it immune from outswapping
  4143. SeeAlso: AL=F9h,FEh
  4144. ---------------------------------------------
  4145. INT 89 - used by BASIC while in interpreter
  4146. ---------------------------------------------
  4147. INT 8A - used by BASIC while in interpreter
  4148. ---------------------------------------------
  4149. INT 8A - APL*PLUS/PC - PRINT SCREEN
  4150. Note:    same as INT 05
  4151. SeeAlso: INT 05
  4152. ---------------------------------------------
  4153. INT 8B - used by BASIC while in interpreter
  4154. ---------------------------------------------
  4155. INT 8B - APL*PLUS/PC - BEEP
  4156. Note:    same as printing a ^G via INT 21/AH=02h
  4157. SeeAlso: INT 21/AH=02h
  4158. ---------------------------------------------
  4159. INT 8C - used by BASIC while in interpreter
  4160. ---------------------------------------------
  4161. INT 8C - CLEAR SCREEN MEMORY
  4162.     AX = 0000h do not save display attributes
  4163.        = 0001h save attributes
  4164. ---------------------------------------------
  4165. INT 8D - used by BASIC while in interpreter
  4166. ---------------------------------------------
  4167. INT 8E - used by BASIC while in interpreter
  4168. ---------------------------------------------
  4169. INT 8F - used by BASIC while in interpreter
  4170. ---------------------------------------------
  4171. INT 90 - used by BASIC while in interpreter
  4172. ---------------------------------------------
  4173. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  4174. ---------------------------------------------
  4175. INT 91 - used by BASIC while in interpreter
  4176. ---------------------------------------------
  4177. INT 92 - used by BASIC while in interpreter
  4178. ---------------------------------------------
  4179. INT 93 - used by BASIC while in interpreter
  4180. ---------------------------------------------
  4181. INT 94 - used by BASIC while in interpreter
  4182. ---------------------------------------------
  4183. INT 95 - used by BASIC while in interpreter
  4184. ---------------------------------------------
  4185. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  4186. Note:    use only when the R= option is invoked on entering APL
  4187. ---------------------------------------------
  4188. INT 96 - used by BASIC while in interpreter
  4189. ---------------------------------------------
  4190. INT 97 - used by BASIC while in interpreter
  4191. ---------------------------------------------
  4192. INT 98 - used by BASIC while in interpreter
  4193. ---------------------------------------------
  4194. INT 99 - used by BASIC while in interpreter
  4195. ---------------------------------------------
  4196. INT 9A - used by BASIC while in interpreter
  4197. ---------------------------------------------
  4198. INT 9B - used by BASIC while in interpreter
  4199. ---------------------------------------------
  4200. INT 9C - used by BASIC while in interpreter
  4201. ---------------------------------------------
  4202. INT 9D - used by BASIC while in interpreter
  4203. ---------------------------------------------
  4204. INT 9E - used by BASIC while in interpreter
  4205. ---------------------------------------------
  4206. INT 9F - used by BASIC while in interpreter
  4207. ---------------------------------------------
  4208. INT A0 - used by BASIC while in interpreter
  4209. ---------------------------------------------
  4210. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  4211. SeeAlso: INT 59
  4212. ---------------------------------------------
  4213. INT A1 - used by BASIC while in interpreter
  4214. ---------------------------------------------
  4215. INT A2 - used by BASIC while in interpreter
  4216. ---------------------------------------------
  4217. INT A3 - used by BASIC while in interpreter
  4218. ---------------------------------------------
  4219. INT A4 - used by BASIC while in interpreter
  4220. ---------------------------------------------
  4221. INT A4 - Right Hand Man API
  4222.     function number in AH
  4223. Note: Right-Hand Man is a TSR desk-top utility, and only hooks this interrupt
  4224.     while popped up
  4225. ---------------------------------------------
  4226. INT A5 - used by BASIC while in interpreter
  4227. ---------------------------------------------
  4228. INT A6 - used by BASIC while in interpreter
  4229. ---------------------------------------------
  4230. INT A7 - used by BASIC while in interpreter
  4231. ---------------------------------------------
  4232. INT A8 - used by BASIC while in interpreter
  4233. ---------------------------------------------
  4234. INT A9 - used by BASIC while in interpreter
  4235. ---------------------------------------------
  4236. INT AA - used by BASIC while in interpreter
  4237. ---------------------------------------------
  4238. INT AB - used by BASIC while in interpreter
  4239. ---------------------------------------------
  4240. INT AC - used by BASIC while in interpreter
  4241. ---------------------------------------------
  4242. INT AD - used by BASIC while in interpreter
  4243. ---------------------------------------------
  4244. INT AE - used by BASIC while in interpreter
  4245. ---------------------------------------------
  4246. INT AF - used by BASIC while in interpreter
  4247. ---------------------------------------------
  4248. INT B0 - used by BASIC while in interpreter
  4249. ---------------------------------------------
  4250. INT B1 - used by BASIC while in interpreter
  4251. ---------------------------------------------
  4252. INT B2 - used by BASIC while in interpreter
  4253. ---------------------------------------------
  4254. INT B3 - used by BASIC while in interpreter
  4255. ---------------------------------------------
  4256. INT B3 - ZIPKEY - GET VERSION
  4257.     AH = 70h
  4258. Return: AH = major version
  4259.     AL = minor version
  4260.     CL = number of states and territories in current database
  4261.     DH = year of current database - 1900
  4262.     DL = month of current database's file date
  4263. Notes:    if installed, the string "ZIPKEY" is present at offset 75h in the
  4264.       interrupt handler's segment, and the byte at 7Bh contains the API
  4265.       version number (currently 00h)
  4266.     ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  4267. ---------------------------------------------
  4268. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  4269.     AH = 71h
  4270.     BX = abbreviation, in either case
  4271. Return: CF set on error
  4272.         AL = FFh
  4273.     CF clear if successful
  4274.         AL = ZIPKEY state code
  4275. SeeAlso: AH=72h
  4276. ---------------------------------------------
  4277. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  4278.     AH = 72h
  4279.     BL = ZIPKEY state code
  4280. Return: CF set on error
  4281.     CF clear if successful
  4282.         AX = abbreviation, in upper case
  4283. SeeAlso: AH=71h,73h
  4284. ---------------------------------------------
  4285. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  4286.     AH = 73h
  4287.     BL = ZIPKEY state code
  4288.     ES:DI -> buffer for name
  4289. Return: CF set on error
  4290.     CF clear if successful
  4291.         ES:DI points one byte beyond end of name
  4292. SeeAlso: AH=72h
  4293. ---------------------------------------------
  4294. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  4295.     AH = 74h
  4296.     DX = zipcode region (0-999)
  4297.     CH = last two digits of zipcode (0-99)
  4298.     ES:DI -> buffer
  4299. Return: CF set on error
  4300.     CF clear if successful
  4301.         ES:DI points one byte beyond end of digit string
  4302. ---------------------------------------------
  4303. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  4304.     AH = 75h
  4305.     DX = zipcode region (0-999)
  4306.     CH = last two digits of zipcode (0-99)
  4307. Return: CF set on error (zipcode not found)
  4308.         AL = suggested state code, FFh if none
  4309.     CF clear if successful
  4310.         AL = ZIPKEY state code
  4311. SeeAlso: AH=76h,79h
  4312. ---------------------------------------------
  4313. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  4314.     AH = 76h
  4315.     DX = zipcode region (0-999)
  4316.     CH = last two digits of zipcode (0-99)
  4317.     ES:DI -> buffer for name
  4318. Return: CF set on error
  4319.         AL = suggested state code, FFh if none
  4320.         ES:DI buffer filled with suggested city name
  4321.     CF clear if successful
  4322.         AL = ZIPKEY state code
  4323.         ES:DI points one byte beyond end of name
  4324. SeeAlso: AH=75h,78h
  4325. ---------------------------------------------
  4326. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  4327.     AH = 77h
  4328.     DX = zipcode region (0-999)
  4329.     CH = last two digits of zipcode (0-99)
  4330.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  4331. Return: CF set on error
  4332.     CF clear if successful    
  4333.         zipcode specification as defined by the BX keystroke is placed in
  4334.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  4335.           by pressing the key specified by BX
  4336. ---------------------------------------------
  4337. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  4338.     AH = 78h
  4339.     BL = ZIPKEY state code
  4340.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  4341. Return: BH = number of matching entries (set to 51 if more than 50)
  4342.     DX = zipcode region of first match (0-999)
  4343.     CL = last two digits of first zipcode in the range (0-99)
  4344.     CH = last two digits of last zipcode in the range (0-99)
  4345. SeeAlso: AH=79h,7Ah
  4346. ---------------------------------------------
  4347. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  4348.     AH = 79h
  4349.     BL = ZIPKEY state code of first state to search
  4350.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  4351. Return:    AL = ZIPKEY state code of first matching state
  4352.     BH = number of matching entries (set to 51 if more than 50)
  4353.     DX = zipcode region of first match (0-999)
  4354.     CL = last two digits of first zipcode in first range (0-99)
  4355.     CH = last two digits of last zipcode in first range (0-99)
  4356. Note:    to find all matching cities, repeat search with BL set to one more than
  4357.       the returned AL
  4358. SeeAlso: AH=78h,7Ah
  4359. ---------------------------------------------
  4360. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  4361.     AH = 7Ah
  4362.     BL = case number (0 to one less than value returned in BH by lookup)
  4363. Return: AL = ZIPKEY state code
  4364.     DX = zipcode region (0-999)
  4365.     CL = last two digits of first zipcode in the range (0-99)
  4366.     CH = last two digits of last zipcode in the range (0-99)
  4367. SeeAlso: AH=78h,79h
  4368. ---------------------------------------------
  4369. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  4370.     AH = 7Bh
  4371. Return: BL = maximum number of characters for a city name
  4372.     BH = ZIPKEY state code for last city-name search
  4373.         FFh if none
  4374.     CX:DX = internal code identifying last city search
  4375. SeeAlso: AH=7Ch
  4376. ---------------------------------------------
  4377. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  4378.     AH = 7Ch
  4379.     BL = maximum number of characters for a city name
  4380.     BH = ZIPKEY state code for last city-name search
  4381.         FFh if none
  4382.     CX:DX = internal code returned by AH=7Bh
  4383. Return: CF set on error
  4384.     CF clear if successful
  4385. SeeAlso: AH=7Bh
  4386. ---------------------------------------------
  4387. INT B3 - ZIPKEY - REQUEST POP UP
  4388.     AH = 7Dh
  4389.     BL = index number to simulate pressing a hotkey
  4390.         FFh for immediate popup with no playback on return
  4391. Return: CF set on error
  4392.         AL = FDh already busy with another request
  4393.            = FEh illegal function
  4394.     CF clear if successful
  4395.         window popped up and was closed by the user
  4396. ---------------------------------------------
  4397. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  4398.     AH = 7Eh
  4399.     DX = zipcode region (0-999)
  4400.     ES:DI -> buffer for name
  4401. Return: CF set on error
  4402.         AL = FFh region does not exist
  4403.     CF clear if successful
  4404.         AL = ZIPKEY state code
  4405.         ES:DI points one byte beyond end of name
  4406. ---------------------------------------------
  4407. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  4408.     AH = 7Fh
  4409.     BL = function
  4410.         00h turn off hotkeys
  4411.         01h turn on hotkeys
  4412.         02h return hotkey status
  4413.         03h toggle hotkey status
  4414. Return: AL = hotkey status
  4415.         00h off
  4416.         01h on
  4417. ---------------------------------------------
  4418. INT B4 - used by BASIC while in interpreter
  4419. ---------------------------------------------
  4420. INT B5 - used by BASIC while in interpreter
  4421. ---------------------------------------------
  4422. INT B6 - used by BASIC while in interpreter
  4423. ---------------------------------------------
  4424. INT B7 - used by BASIC while in interpreter
  4425. ---------------------------------------------
  4426. INT B8 - used by BASIC while in interpreter
  4427. ---------------------------------------------
  4428. INT B9 - used by BASIC while in interpreter
  4429. ---------------------------------------------
  4430. INT BA - used by BASIC while in interpreter
  4431. ---------------------------------------------
  4432. INT BB - used by BASIC while in interpreter
  4433. ---------------------------------------------
  4434. INT BC - used by BASIC while in interpreter
  4435. ---------------------------------------------
  4436. INT BD - used by BASIC while in interpreter
  4437. ---------------------------------------------
  4438. INT BE - used by BASIC while in interpreter
  4439. ---------------------------------------------
  4440. INT BF - used by BASIC while in interpreter
  4441. ---------------------------------------------
  4442. INT C0 - used by BASIC while in interpreter
  4443. ---------------------------------------------
  4444. INT C1 - used by BASIC while in interpreter
  4445. ---------------------------------------------
  4446. INT C2 - used by BASIC while in interpreter
  4447. ---------------------------------------------
  4448. INT C3 - used by BASIC while in interpreter
  4449. ---------------------------------------------
  4450. INT C4 - used by BASIC while in interpreter
  4451. ---------------------------------------------
  4452. INT C5 - used by BASIC while in interpreter
  4453. ---------------------------------------------
  4454. INT C6 - used by BASIC while in interpreter
  4455. ---------------------------------------------
  4456. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  4457. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  4458.       the older interrupts
  4459. ---------------------------------------------
  4460. INT C7 - used by BASIC while in interpreter
  4461. ---------------------------------------------
  4462. INT C7 - APL*PLUS/PC - ???
  4463. ---------------------------------------------
  4464. INT C8 - used by BASIC while in interpreter
  4465. ---------------------------------------------
  4466. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  4467. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  4468.       the older interrupts
  4469. ---------------------------------------------
  4470. INT C9 - used by BASIC while in interpreter
  4471. ---------------------------------------------
  4472. INT C9 - APL*PLUS/PC - ???
  4473. ---------------------------------------------
  4474. INT CA - used by BASIC while in interpreter
  4475. ---------------------------------------------
  4476. INT CA - APL*PLUS/PC - IDENTICAL TO INT 8A
  4477. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  4478.       the older interrupts
  4479. ---------------------------------------------
  4480. INT CB - used by BASIC while in interpreter
  4481. ---------------------------------------------
  4482. INT CB - APL*PLUS/PC - IDENTICAL TO INT 8B
  4483. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  4484.       the older interrupts
  4485. ---------------------------------------------
  4486. INT CC - used by BASIC while in interpreter
  4487. ---------------------------------------------
  4488. INT CC - APL*PLUS/PC - IDENTICAL TO INT 8C
  4489. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  4490.       the older interrupts
  4491. ---------------------------------------------
  4492. INT CD - used by BASIC while in interpreter
  4493. ---------------------------------------------
  4494. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4495. ---------------------------------------------
  4496. INT CE - used by BASIC while in interpreter
  4497. ---------------------------------------------
  4498. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4499. ---------------------------------------------
  4500. INT CF - used by BASIC while in interpreter
  4501. ---------------------------------------------
  4502. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  4503. ---------------------------------------------
  4504. INT D0 - used by BASIC while in interpreter
  4505. ---------------------------------------------
  4506. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4507. ---------------------------------------------
  4508. INT D1 - used by BASIC while in interpreter
  4509. ---------------------------------------------
  4510. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4511. ---------------------------------------------
  4512. INT D2 - used by BASIC while in interpreter
  4513. ---------------------------------------------
  4514. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4515. ---------------------------------------------
  4516. INT D3 - used by BASIC while in interpreter
  4517. ---------------------------------------------
  4518. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4519. ---------------------------------------------
  4520. INT D4 - used by BASIC while in interpreter
  4521. ---------------------------------------------
  4522. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4523. ---------------------------------------------
  4524. INT D5 - used by BASIC while in interpreter
  4525. ---------------------------------------------
  4526. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4527. ---------------------------------------------
  4528. INT D6 - used by BASIC while in interpreter
  4529. ---------------------------------------------
  4530. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4531. ---------------------------------------------
  4532. INT D7 - used by BASIC while in interpreter
  4533. ---------------------------------------------
  4534. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4535. ---------------------------------------------
  4536. INT D8 - used by BASIC while in interpreter
  4537. ---------------------------------------------
  4538. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4539. ---------------------------------------------
  4540. INT D9 - used by BASIC while in interpreter
  4541. ---------------------------------------------
  4542. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4543. ---------------------------------------------
  4544. INT DA - used by BASIC while in interpreter
  4545. ---------------------------------------------
  4546. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4547. ---------------------------------------------
  4548. INT DB - used by BASIC while in interpreter
  4549. ---------------------------------------------
  4550. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4551. ---------------------------------------------
  4552. INT DC - used by BASIC while in interpreter
  4553. ---------------------------------------------
  4554. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4555. ---------------------------------------------
  4556. INT DD - used by BASIC while in interpreter
  4557. ---------------------------------------------
  4558. INT DD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  4559. ---------------------------------------------
  4560. INT DE - used by BASIC while in interpreter
  4561. ---------------------------------------------
  4562. INT DE - APL*PLUS/PC - ???
  4563. Note:    appears to be the same as INT 16
  4564. ---------------------------------------------
  4565. INT DF - used by BASIC while in interpreter
  4566. ---------------------------------------------
  4567. INT DF - APL*PLUS/PC - SAME AS INT 10
  4568. SeeAlso: INT 10
  4569. ---------------------------------------------
  4570. INT E0 - CP/M-86 function calls
  4571. ---------------------------------------------
  4572. INT E0 - used by BASIC while in interpreter
  4573. ---------------------------------------------
  4574. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  4575. ---------------------------------------------
  4576. INT E1 - used by BASIC while in interpreter
  4577. ---------------------------------------------
  4578. INT E2 - used by BASIC while in interpreter
  4579. ---------------------------------------------
  4580. INT E3 - used by BASIC while in interpreter
  4581. ---------------------------------------------
  4582. INT E4 - Logitech Modula v2.0 - MonitorEntry
  4583.     AX = 0005h
  4584.     BX = priority
  4585. SeeAlso: AX=0006h
  4586. ---------------------------------------------
  4587. INT E4 - Logitech Modula v2.0 - MonitorExit
  4588.     AX = 0006h
  4589. SeeAlso: AX=0005h
  4590. ---------------------------------------------
  4591. INT E4 - used by BASIC while in interpreter
  4592. ---------------------------------------------
  4593. INT E5 - used by BASIC while in interpreter
  4594. ---------------------------------------------
  4595. INT E6 - used by BASIC while in interpreter
  4596. ---------------------------------------------
  4597. INT E7 - used by BASIC while in interpreter
  4598. ---------------------------------------------
  4599. INT E8 - used by BASIC while in interpreter
  4600. ---------------------------------------------
  4601. INT E9 - used by BASIC while in interpreter
  4602. ---------------------------------------------
  4603. INT EA - used by BASIC while in interpreter
  4604. ---------------------------------------------
  4605. INT EB - used by BASIC while in interpreter
  4606. ---------------------------------------------
  4607. INT EC - used by BASIC while in interpreter
  4608. ---------------------------------------------
  4609. INT ED - used by BASIC while in interpreter
  4610. ---------------------------------------------
  4611. INT EE - used by BASIC while in interpreter
  4612. ---------------------------------------------
  4613. INT EF - used by BASIC while in interpreter
  4614. ---------------------------------------------
  4615. INT EF - compiled BASIC - ORIGINAL INT 09 VECTOR
  4616. ---------------------------------------------
  4617. INT EF - GEM - INTERFACE
  4618.     CX = 0473h
  4619.     DS:DX -> GEM parameter block
  4620. ---------------------------------------------
  4621. INT F0 - used by BASIC while in interpreter
  4622. ---------------------------------------------
  4623. INT F0 - compiled BASIC - ORIGINAL INT 08 VECTOR
  4624. ---------------------------------------------
  4625. INT F1 - reserved for user interrupt
  4626. ---------------------------------------------
  4627. INT F2 - reserved for user interrupt
  4628. ---------------------------------------------
  4629. INT F3 - reserved for user interrupt
  4630. ---------------------------------------------
  4631. INT F4 - reserved for user interrupt
  4632. ---------------------------------------------
  4633. INT F5 - reserved for user interrupt
  4634. ---------------------------------------------
  4635. INT F6 - reserved for user interrupt
  4636. ---------------------------------------------
  4637. INT F7 - reserved for user interrupt
  4638. ---------------------------------------------
  4639. INT F8 - 10 ms INTERVAL TIMER (TANDY???)
  4640. ---------------------------------------------
  4641. INT F9 - reserved for user interrupt
  4642. ---------------------------------------------
  4643. INT FA - USART READY (RS-232C) (TANDY???)
  4644. ---------------------------------------------
  4645. INT FB - USART Rx READY (keyboard) (TANDY???)
  4646. ---------------------------------------------
  4647. INT FC - reserved for user interrupt
  4648. ---------------------------------------------
  4649. INT FD - reserved for user interrupt
  4650. ---------------------------------------------
  4651. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  4652. ---------------------------------------------
  4653. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  4654. ---------------------------------------------
  4655. INT FF - Z100 - WARM BOOT
  4656. ---------------------------------------------
  4657. Please redistribute the following files unmodified as a group, in an archive
  4658. named INTER490:
  4659.     INTERRUP.1ST    the read-me file, containing credits, availability info
  4660.     INTERRUP.A    INT 00 through INT 1F
  4661.     INTERRUP.B    INT 20 through INT 27
  4662.     INTERRUP.C    INT 28 through INT 5F
  4663.     INTERRUP.D    INT 60 through INT FF
  4664.     INTERRUP.PRI    a brief introduction to interrupts
  4665.     INTPRINT.COM    a simple formatter that also generates the list summary
  4666.     INTPRINT.DOC    instructions for INTPRINT
  4667.     INTPRINT.C    source code for INTPRINT
  4668.     MEMORY.LST    format of the BIOS data area
  4669. This compilation is Copyright (c) 1989, 1990 Ralf Brown
  4670. ---------------------------------------------
  4671. ARPA: ralf@cs.cmu.edu
  4672. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  4673. BIT:  ralf%cs.cmu.edu@cmuccvma
  4674. FIDO: Ralf Brown 1:129/3.1
  4675.     or post a message to the DR_DEBUG echo
  4676. CIS:  >INTERNET:ralf@cs.cmu.edu
  4677.